Экспорт данных Excel в Access с помощью VBA (изображения и код)
Что это такое?
Этот код VBA поможет вам загрузить или экспортировать данные Excel в Access в один клик.
Почему?
Ты можешь экспортировать данные Excel в Access даже не открывая базу данных Access.
Как экспортировать данные Excel в Access
Шаг 1: Откройте Эксель лист и перейдите в конструктор кода VBA (Alt + F11) и откройте новый модуль
.
Шаг 2: Скопируйте и вставьте в него приведенный ниже код.
Const TARGET_DB = "myDB.accdb" 'Замените 'myDB.accdb' на имя вашей базы данных, убедитесь, что и Excel, и Access DB находятся по одному пути.
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("Имя листа").Activate 'Замените "Имя листа" на имя вашего листа Excel
Rw = Range("A65536").End(xlUp).Row
'Дайте вашему листу Excel данные Range
Set cnn = New ADODB.Connection
MyConn = ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
С CNN
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MyConn
Конец с
'Замените 'tblMyExcelUpload' на имя вашей таблицы в Access
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="tblMyExcelUpload", ActiveConnection:=cnn, _
CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _
Параметры:=adCmdTable
'Загрузите все записи из Excel в Access.
For i = 2 To Rw
rst.AddNew
Для j = 1 - 7
rst(Cells(1, j).Value) = Cells(i, j).Value
Следующий j
rst.Update
Следующий i
' Закройте соединение
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing
Конец субтитра
Шаг 3Нажмите кнопку "Выполнить" или F5. (Также вы можете вставить кнопку/форму в лист excel, затем щелкнуть правой кнопкой мыши и назначить этот макрос для выполнения каждый раз). Вы закончили загрузку!!! Записи Excel успешно загружены в Access, откройте таблицу Access DB и проверьте данные.
Примечание: Убедитесь, что 'Microsoft ActiveX Data Objects Library' включена в меню Инструменты - Ссылки (используйте последнюю версию [6.1 на момент публикации]).
Pin
8 Responses
Всем привет;
Должны ли эти два пути быть одинаковыми, чтобы ADODBConnection работало? То есть ThisWorkbook.Path и Target_DB.
Командуйте сверху:
ThisWorkbook.Path & Application.PathSeparator & TARGET_DB
Или можно указать Workbook.Path следующим образом
"C:\MyExcelFiles\MyWorkbook.xlsx" и база данных Access TARGET_DB находится в
"C:\MyDataBases\MyAccessDB.accdb"?
Мой код работает, когда Excel WorkBook и Access DB находятся в одной папке, но когда они находятся в разных папках (правильно организованная структура библиотеки), код терпит неудачу в точке .Open MyConn.
Спасибо всем,
Марио,
Привет
Как установить пароль для него?
Танки
rst(Cells(1, j).Value) = Cells(i, j).Value
код ломается здесь
----
Ошибка 3265
Элемент не найден в коллекции, соответствующей запрашиваемому имени или порядковому номеру
----
Как будет выглядеть код, если я размещу электронную таблицу и базу данных в разных местах, т.е. в разных путях?
Здравствуйте,
мой код работает до тех пор, пока
Sheets("Имя листа").Activate
Я выделил лист, но дальше ничего не происходит.
Не могли бы вы посоветовать?
Спасибо.
Попробовать Рабочие листы("Ваш лист").Активировать
Есть ли какая-нибудь одна команда для загрузки данных, например (Range.CopyFromRecordset)?
Привет, Кришнан, не уверен, позвольте мне исследовать и сообщить вам.