Как выполнить запрос Access из Excel

Что делает макрос: Вот отличный макрос для тех из вас, кто часто копирует и вставляет результаты запросов Microsoft Access в Excel. В этом макросе вы используете DAO (Data Access Object), чтобы открыть и запустить запрос Access в фоновом режиме и вывода результатов в Excel.

Как макрос работает

В этом макросе вы указываете Excel базу данных Access и извлекаете данные из существующего запроса доступа. Затем вы сохраняете этот запрос в Recordset объекта, который вы можете использовать для заполнения таблиц Excel.
Необходимо установить ссылку на библиотеку объектов Microsoft Access.
В дополнение к библиотеке объектов доступа, необходимо установить ссылку на Microsoft DAO XX библиотеки объектов, где XX это номер версии. Обратите внимание, что вы можете увидеть несколько версий этой библиотеки в диалоговом окне Reference. Как правило, нужно выбрать последнюю версию Microsoft DAO. Установите флажок рядом с записью.

Код макроса

Sub VipolnitZaprosAccessIzExcel()
'Шаг 1: Объявляем переменные
Dim MyDatabase As DAO.Database
Dim MyQueryDef As DAO.QueryDef
Dim MyRecordset As DAO.Recordset
Dim i As Integer
'Шаг 2: Определить базу данных и запрос
Set MyDatabase = DBEngine.OpenDatabase _
("C:\Temp\YourAccessDatabse.accdb")
Set MyQueryDef = MyDatabase.QueryDefs("Ваше имя запроса")
'Шаг 3: Откройте запрос
Set MyRecordset = MyQueryDef.OpenRecordset
'Шаг 4: Очистить предыдущее содержимое
Sheets("Лист1").Select
ActiveSheet.Range("A6:K10000").ClearContents
'Шаг 5: Скопируйте набор записей в Excel
ActiveSheet.Range("A7").CopyFromRecordset MyRecordset
'Шаг 6: Добавить имена заголовков столбцов в электронную таблицу
For i = 1 To MyRecordset.Fields.Count
ActiveSheet.Cells(6, i).Value = MyRecordset.Fields(i - 1).Name
Next i
End Sub

Как этот код работает

  1. Шаг 1 объявляет необходимые переменные. Переменная объекта MyDatabase выставляет ваш Access к приложению базы данных через библиотеку объектов DAO. MyQueryDef также является объектной переменной, которая служит контейнером памяти для целевого запроса. MyRecordset является Объект набора записей, содержащий результаты извлечения данных. В дополнение к этим, i целочисленная переменная используется для добавления заголовков столбцов.
  2. Шаг 2 определяет базу данных, которая содержит ваш целевой запрос, а также какой запрос будет запущен. Присвоение запроса объекту QueryDef позволяет вам по существу открыть запрос.
  3. Шаг 3 буквально запускает запрос в памяти. Результаты запроса затем сохраняются в MyRecordset объекте. После того, как результаты находятся в наборе записей, вы можете вывести данные в Excel.
  4. Шаг 4 готовится к выводу набора записей путем очистки области вывода. Это гарантирует отсутствие остатка предыдущих данных.
  5. На этом шаге используется метод CopyFromRecordset в Excel, чтобы получить возвращенный набор данных в электронные таблицы. В этом примере макрос копирует данные из объекта MyRecordset в Лист1 в ячейке А7.
  6. Наконец, вы перечисляете все поля в наборе записей, чтобы автоматически получить имя каждого заголовка и вводите его в Excel.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий