Importowanie tabeli programu Access do programu Excel za pomocą języka VBA (obrazy i kod)
Co to jest?Ten kod VBA ułatwia pobieranie lub importowanie Dostęp Dane tabelaryczne lub zapytania do Excela jednym kliknięciem.Dlaczego tak jest?Dane tabeli programu Access można importować do programu Excel nawet bez otwierania bazy danych programu Access.Jak zaimportować dane tabeli Access do Excela
Krok 1: Otwórz skoroszyt programu Excel i przejdź do narzędzia do tworzenia kodu VBA (Alt + F11) i otwórz nowy moduł.Krok 2: Skopiuj i wklej w nim poniższy kod.
Sub importAccessdata() Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Dim sQRY As String Dim strFilePath As String strFilePath = "C:\DatabaseFolder\myDB.accdb" 'Zastąp 'DatabaseFolder' i 'myDB.accdb' swoim Ścieżka bazy danych i nazwa bazy danych Ustaw cnn = Nowy zestaw ADODB.Connection rs = Nowy ADODB.Recordset cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Źródło danych=" & strFilePath & ";" sQRY = "SELECT * FROM tblData" 'Zastąp 'tblData' nazwą tabeli Access DB lub nazwą zapytania, z którego chcesz pobrać dane rs.CursorLocation = adUseClient rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly Application.ScreenUpdating = False Sheet1.Range("A1").CopyFromRecordset rs rs.Close Set rs = Nic cnn.Close Set cnn = Nic Exit Sub End Sub
Krok 3: Kliknij przycisk Uruchom lub F5 (Możesz także wstawić przycisk/kształt w arkuszu Excela, a następnie kliknąć prawym przyciskiem myszy i przypisać to makro do uruchamiania za każdym razem.)
Rekordy bazy danych Access zostały pomyślnie przesłane do programu Excel. Otwórz skoroszyt programu Excel i sprawdź dane.
Notatka: Upewnij się, że włączona jest biblioteka obiektów danych Microsoft ActiveX Narzędzia – Referencje (numer używa najnowszej wersji [6.1 w chwili pisania tego posta]).
Pin
Jestem pewien, że pracujesz na wielu danych Excel, MS Access i VBA, więc ja Zdecydowanie Polecam dołączenie do poniższego formularza użytkownika Ultimate Excel VBA z bazą danych Access! Warto w siebie zainwestować! ZRÓB TO TERAZ!
Zbuduj swój własny program w świecie rzeczywistym, naucz się prawdziwego Excel VBA (makra), przekraczaj granice programu Excel dzięki kompletnemu projektowi
8 Responses
Proszę pana, chcę wyeksportować rekordy bazy danych dostępu do programu Excel za pomocą przycisku poleceń w wersji 6.0. Proszę o przesłanie pełnego kodu vb6.0
Mam arkusz 1 w programie Excel, ale w następnym kroku pojawia się błąd wykonania 424 w makrze. Dlaczego tak się dzieje?
Arkusz1.Zakres(“A1”).KopiaZzestawRekordów rs
Cześć, chciałem sprawdzić, czy trzymam bazę danych Access DB na dysku współdzielonym i rozpowszechniam to makro Excela w mojej organizacji. Czy to będzie działać? Chcę, aby moje makro programu Excel odczytywało niektóre wartości z bazy danych programu Access, a następnie aktualizowało niektóre zmienne podczas otwierania programu Excel.
Również jeśli Access nie działa, czy mogę użyć innego programu Excel przechowywanego w organizacji na jednym dysku i uzyskać do niego dostęp zamiast do bazy danych. Próbowałem, używając metody otwierania skoroszytu w moim makrze, aby odczytać mój plik Excel w OneDrive, który jest udostępniany wszystkim w mojej firmie, ale to nie zadziałało.
Błąd kompilacji w liniach 5, 8, 9…
W końcu to zrobiłem.
używam 2 zmiennych (pole tekstowe 1 jako wartość „waluta, format R$0.000,00” i pole tekstowe 2 jako „data”, format mm/dd/rrrr)
Kod ↓
'================================================= ===|
'========================================= Kauê Vaz==|
'================================================= ===|
Opcja Jasna
' Kliknij Narzędzia, Odniesienia i wybierz
' Biblioteka obiektów danych Microsoft ActiveX 2.0
Sub getDataFromAccess(strValue, strDate)
Wymnij DBFullName jako ciąg
Dim Połącz jako ciąg, źródło jako ciąg
Przyciemnij połączenie jako połączenie ADODB
Przyciemnij zestaw rekordów jako zestaw rekordów ADODB
Dim Col jako liczba całkowita
Przyciemnij zmienną mySQL jako ciąg znaków
Przyciemnij mySQLVariable_1 jako ciąg
Przyciemnij strSQL jako ciąg
mySQLVariable = strValue 'Wartość z pola tekstowego 1 (format waluty R$0.000,00)
mySQLVariable_1 = strDate „Wartość z pola tekstowego 2 (format daty mm/dd/rrrr)
„Kod SQL
strSQL = „WYBIERZ * Z bazy danych GDZIE”
strSQL = strSQL & ” [Wartość] = '” & (mySQLVariable) & „” i ”
strSQL = strSQL & ” [Data] = '” & (mySQLVariable_1) & „” ”
' Baza danych, wybierz dostęp do bazy danych
DBFullName = „C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb”
' Otwórz połączenie
Ustaw połączenie = nowe połączenie ADODB
Connect = „Dostawca=Microsoft.ACE.OLEDB.12.0;”
Connect = Connect & „Data Source=” & DBFullName & „;”
Connection.Open ConnectionString:=Połącz
' Utwórz zestaw rekordów
Ustaw zestaw rekordów = Nowy zestaw rekordów ADODB
Z zestawem rekordów
' Wyszukaj wartości przy użyciu zmiennej strSQL kodu SQL
Źródło = strSQL
.Open Source:=Źródło, ActiveConnection:=Połączenie
' Importowanie kolumn z bazy danych.
Dla Col = 0 do zestawu rekordów.Fields.Count – 1
Range(“A5”).Offset(0, Col).Wartość = Zestaw rekordów.Fields(Col).Nazwa
Następny
' Importowanie linii z bazy danych.
Zakres(„A5”).Przesunięcie(1, 0).KopiujZestawRekordówZestaw Rekordów
Koniec z
Ustaw zestaw rekordów = nic
Połączenie.Zamknij
Ustaw połączenie =
ActiveSheet.Columns.AutoFit
Napis końcowy
Pozdrowienia
Czy mogę zaimportować tylko niektóre dane? Filtrowanie według 2 zmiennych?
Przykład:
X = 13/03
Y = '122315124'
Przynieść z dostępu bd tylko linie zawierające te zmienne?
Pracował dla mnie. Dziękuję bardzo!
To najlepsze zapytanie, jakie kiedykolwiek widziałem. Czy mógłbyś pomóc w dodaniu klauzuli Where w instrukcji sql. Próbowałem zmodyfikować zapytanie, ale zgłasza błąd.