VBA, MS Access MS Access в примерах

MS Excel - Импорт данных из рабочей книги при помощи запросов на добавление (Несколько листов сразу)

Запросом:


Private Sub TestTwo()
Dim s$, sPath$

'Путь к файлу
    sPath = "c:\путь\файл.xls"

'Для Excel версии 2010 и выше драйвер несколько иной:
'[Excel 12.0 XML; HDR=YES;]

'Построение запроса 01 для таблицы 01 и листа 01
    s = "SELECT * INTO [ИмяТаблицы01] FROM [ИмяЛиста01$] IN '" & sPath & "'[Excel 8.0; HDR=Yes;]"
    CurrentDb.Execute s 'Выполнение запроса

'Построение запроса 02 для таблицы 02 и листа 02
    s = "SELECT * INTO [ИмяТаблицы02] FROM [ИмяЛиста02$] IN '" & sPath & "'[Excel 8.0; HDR=Yes;]"
    CurrentDb.Execute s 'Выполнение запроса

'Построение запроса 03 для таблицы 03 и листа 03
    s = "SELECT * INTO [ИмяТаблицы03] FROM [ИмяЛиста03$] IN '" & sPath & "'[Excel 8.0; HDR=Yes;]"
    CurrentDb.Execute s 'Выполнение запроса

'И так далее по необходимости ...
    s = "INSERT INTO Адреса SELECT * FROM [Лист1$] IN '" & sPath & "'[Excel 8.0; HDR=NO;];
    CurrentDb.Execute s

End Sub


За блокировку отвечает параметр IMEX. Например запрос

SELECT [Поле1], [Поле2], [Поле3] FROM [Лист1$] IN '' [Excel 8.0;HDR=Yes;IMEX=1;DATABASE=\\адрес\Имя файла.xls];

открывает только для чтения.
Если создать связанную таблицу методом CreateTableDef (DAO) и укажете IMEX=1, то таблица также будет открываться только в режиме чтения не блокируя файл.

Назад ToTop
L.E. 20.03.2024
Рейтинг@Mail.ru