Импорт таблицы Access в Excel с помощью VBA (изображения и код)
Что это такое?Этот код VBA поможет вам загрузить или импортировать Доступ Табличные данные или запросы в Excel одним щелчком мыши.Почему?Вы можете импортировать данные из таблиц Access в Excel, даже не открывая БД Access.Как импортировать данные таблицы Access в Excel
Шаг 1: Откройте рабочую книгу Excel, зайдите в конструктор кода VBA (Alt + F11) и откройте новый модуль.Шаг 2: Скопируйте и вставьте в него приведенный ниже код.
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" 'Замените 'DatabaseFolder' и 'myDB.accdb' на путь к вашей БД и имя БД
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Источник данных=" & strFilePath & ";"
sQRY = "SELECT * FROM tblData" 'Замените 'tblData' на имя вашей таблицы Access DB или имя запроса, из которого вы хотите загрузить данные
rs.CursorLocation = adUseClient
rs.Open sQRY, cnn, adOpenStatic, adLockReadOnly
Application.ScreenUpdating = False
Sheet1.Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
Exit Sub
End Sub
Шаг 3: Нажмите кнопку "Выполнить" или F5 (также вы можете вставить кнопку/форму в лист excel, затем щелкнуть правой кнопкой мыши и назначить этот макрос для выполнения каждый раз).
Записи БД Access успешно загружены в Excel, откройте рабочую книгу Excel и проверьте данные.
Примечание: Убедитесь, что 'Microsoft ActiveX Data Objects Library' включена в меню Инструменты – Ссылки (используйте последнюю версию [6.1 на момент публикации]).
Pin
Я уверен, что вы работаете с большим количеством данных Excel, MS Access и VBA, поэтому я Сильно Рекомендуем вам присоединиться к нижеприведенному Ultimate Excel VBA Userform с базой данных Access! Это достойная инвестиция в себя! СДЕЛАЙТЕ ЭТО ПРЯМО СЕЙЧАС!
Создайте свою собственную программу в реальном мире, изучите настоящий Excel VBA(макросы), превзойдите границы Excel с помощью полного проекта
8 Responses
Сэр, я хочу экспортировать записи базы данных access в excel с помощью командной кнопки в vb6.0, пожалуйста, пришлите мне полный код vb6.0
У меня есть лист1 в excel, но я получаю ошибку времени выполнения 424 в макросе на следующем шаге, почему это так?
Sheet1.Range("A1").CopyFromRecordset rs
Привет, хотел проверить, если я сохраню свою Access DB на общем диске и распространю этот макрос excel в моей организации, будет ли он работать? Я хочу, чтобы мой макрос excel считывал некоторые значения из этой базы данных Access DB и затем обновлял некоторую переменную при открытии excel.
Также, если Access не работает, могу ли я использовать другой excel, хранящийся в организации на одном диске, и получить доступ к нему вместо DB. Я пробовал использовать метод открытия рабочей книги в макросе, чтобы прочитать мой excel из onedrive, который является общим для всех в моей компании, но это не сработало.
Ошибка компиляции в строках 5, 8, 9...
В конце концов, мне это удалось.
Я использую 2 переменные (textbox1 в качестве значения 'currency, format R$0.000,00' и textbox2 в качестве 'date', format mm/dd/yyy).
Код ↓
‘====================================================|
'========================================== Kauê Vaz==|
‘====================================================|
Вариант явный
' Нажмите Инструменты, Ссылки и выберите
' Библиотека Microsoft ActiveX Data Objects 2.0
Sub getDataFromAccess(strValue, strDate)
Dim DBFullName As String
Dim Connect As String, Source As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim mySQLVariable As String
Dim mySQLVariable_1 As String
Dim strSQL As String
mySQLVariable = strValue 'Значение из текстового поля1 (формат валюты R$0.000,00)
mySQLVariable_1 = strDate 'Значение из textbox2 (формат даты mm/dd/yyy)
'SQL-код
strSQL = "SELECT * FROM tblDatabase WHERE "
strSQL = strSQL & " [Значение] = '" & (mySQLVariable) & "' и "
strSQL = strSQL & " [Дата] = '" & (mySQLVariable_1) & "' "
' База данных, выберите доступ к базе данных
DBFullName = "C:\Users\Desktop\Databases\BD_PaynotProcess\bd_PaynotProcess.accdb"
' Открыть соединение
Set Connection = New ADODB.Connection
Connect = "Provider=Microsoft.ACE.OLEDB.12.0;"
Connect = Connect & "Источник данных=" & DBFullName & ";"
Connection.Open ConnectionString:=Connect
' Создание RecordSet
Set Recordset = Новый ADODB.Recordset
С набором записей
' Поиск значений с помощью переменной strSQL кода SQL
Источник = strSQL
.Open Source:=Source, ActiveConnection:=Connection
' Импорт столбцов из базы данных.
For Col = 0 To Recordset.Fields.Count - 1
Range("A5").Offset(0, Col).Value = Recordset.Fields(Col).Name
Следующий
' Импорт строк из базы данных.
Range("A5").Offset(1, 0).CopyFromRecordset Recordset
Конец с
Set Recordset = Nothing
Connection.Close
Установить соединение =
ActiveSheet.Columns.AutoFit
Конец субтитра
С уважением,
Могу ли я импортировать только некоторые данные? Фильтрация по 2 переменным?
Пример:
X = 13/03
Y = '122315124'
Взять из access bd только строки, содержащие эти переменные?
Мне помогло. Большое спасибо!
Это лучший запрос, который я когда-либо видел. Не могли бы вы помочь добавить в sql-запрос предложение Where. Я попытался изменить ваш запрос, но он выдает ошибку.