Eksport danych z Excela do Access za pomocą VBA (obrazy i kod)
Co to jest?
Ten kod VBA pomaga w przesyłaniu lub eksportuj dane Excela do Accessa jednym kliknięciem.
Dlaczego tak jest?
Możesz eksportuj dane Excela do Accessa nawet bez otwierania bazy danych Access.
Jak wyeksportować dane z programu Excel do programu Access
Krok 1: Otwórz Przewyższać Arkusz i przejdź do kreatora kodu VBA (Alt + F11) i Otwórz nowy moduł
.
Krok 2: Skopiuj i wklej do niego poniższy kod.
Const TARGET_DB = "myDB.accdb" 'Zastąp 'myDB.accdb' swoją nazwą bazy danych, upewnij się, że zarówno Excel, jak i Access DB znajdują się w tej samej ścieżce.
Sub PushTableToAccess()
Dim cnn As ADODB.Connection
Dim MyConn
Dim rst As ADODB.Recordset
Dim i As Long, j As Long
Dim Rw As Long
Sheets("Nazwa arkusza").Activate Zastąp "Nazwę arkusza" nazwą arkusza programu Excel.
Rw = Range("A65536").End(xlUp).Row
'Podaj zakres danych arkusza programu Excel
Set cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Z cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MyConn
Koniec z
'Zastąp "tblMyExcelUpload" nazwą tabeli w programie Access.
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="tblMyExcelUpload", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Options:=adCmdTable
'Załaduj wszystkie rekordy z Excela do Access.
For i = 2 To Rw
rst.AddNew
Dla j = 1 do 7
rst(Cells(1, j).Value) = Cells(i, j).Value
Następny j
rst.Update
Następny i
' Zamknij połączenie
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Napis końcowy
Krok 3Kliknij przycisk Uruchom lub F5 (możesz również wstawić przycisk / kształt w arkuszu Excela, a następnie kliknąć prawym przyciskiem myszy i przypisać to makro do uruchamiania za każdym razem). Przesyłanie zakończone!!! Rekordy programu Excel zostały pomyślnie przesłane do programu Access, otwórz tabelę bazy danych programu Access i sprawdź dane.
Notatka: Upewnij się, że opcja "Microsoft ActiveX Data Objects Library" jest włączona w menu Narzędzia – Referencje (numer używa najnowszej wersji [6.1 w chwili pisania tego posta]).
Pin
8 Responses
Witam wszystkich;
Czy te dwie lokalizacje ścieżek muszą być takie same, aby połączenie ADODBC działało? To znaczy ThisWorkbook.Path i Target_DB.
Polecenie z góry:
ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Lub, czy Workbook.Path może być powiedzmy
"C:\MyExcelFiles\MyWorkbook.xlsx", a baza danych Access TARGET_DB powinna znajdować się w pliku
"C:\MyDataBases\MyAccessDB.accdb"?
Mój kod działa, gdy zarówno skoroszyt programu Excel, jak i baza danych programu Access znajdują się w tym samym folderze, ale gdy znajdują się w różnych folderach (odpowiednio zorganizowana struktura bibliotek), kod kończy się niepowodzeniem w punkcie .Open MyConn.
Dziękujemy wszystkim,
Mario,
Cześć
Jak ustawić hasło?
Zbiorniki
rst(Cells(1, j).Value) = Cells(i, j).Value
złamania kodu tutaj
———-
Błąd 3265
Nie można znaleźć elementu w kolekcji odpowiadającego żądanej nazwie lub numerowi porządkowemu.
———-
Jak wyglądałby kod, gdybym miał arkusz kalkulacyjny i bazę danych w różnych lokalizacjach, tj. ścieżkach?
Witam,
mój kod działa do momentu
Sheets("Nazwa arkusza").Activate
Arkusz został wybrany, ale nic więcej się nie dzieje.
Czy mógłbyś coś doradzić?
Dziękuję
Try Worksheets("Twój arkusz").Activate
Czy istnieje jakieś pojedyncze polecenie do przesłania danych, takie jak (Range.CopyFromRecordset)?
Cześć Krishnan, nie jestem pewien, pozwól mi zbadać i zaktualizuję cię.