MyTetra Share
Делитесь знаниями!
Как выполнить запрос Access из Excel
12.10.2019
20:29
Раздел: !Закладки - VBA - Access - Excel->Access

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

Автор Дмитрий Якушев На чтение3 мин. Просмотров120

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

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

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

Код макроса


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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.
Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования