Всем привет
Имеется файл Excel, в который из базы Access макросом копируется часть данных из нужной таблицы с необходимыми фильтрами.
Внизу кусок кода, который за это отвечает.
Проблемы, которые хочется решить:
1) Файл не работает на 64-разрядной версии (а хочется, чтобы работал)
2) Файл не работает на версии Excel выше 2013 года (а хочется, использовать последнюю версию Excel)
3) На некоторых компьютерах файл иногда зависает, когда база Access и файл Excel лежат на сетевом диске, а не на диске компьютера
Если попробовать поменять версию, на ту, которая не соответствует одному из параметров, то Excel выдает ошибку ODBC 1004 на предпоследней строке кода
Можно переделать полностью базу Access, т.к. я подозреваю, что она тоже не оптимальна, т.к. сделана лет 7 назад, только данные обновляются ежедневно
Можно полностью переписать код макроса.
Подскажите что лучше сделать или подскажите что лучше почитать, чтобы это сделать самостоятельно?)
Комментарии по коду: переменные MySource, MyTable, MySelection, MyFilter определяются выше
MySource - путь к текущей папке, где лежит файл Excel и база Access
MyTable - Таблица в базе Access
MySelection - Имя одного из столбцов таблицы
MyFilter - одно из значений, которое может встретиться в столбце MySelection
P.S. использовать PQ не предлагать, нужна именно выгрузка значений из базы Access, чтоб потом их обрабатывать формулами, которые неудобно использовать в умных таблицах.
Код |
---|
With Sheets("Лист1").Cells(1, 1).QueryTable
.Connection = "ODBC;DBQ=" & MySource & "\Base.mdb; Default Dir=" & MySource & _
";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;" & _
"PageTimeout=5;ReadOnly=1;Safe Transactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
.CommandText = Array( _
"SELECT ", _
"`Столбец1`, `Столбец2`,`Столбец3`" _
& Chr(13) & "" & Chr(10) & _
"FROM " & MyTable & Chr(13) & "" & Chr(10) & _
"WHERE (" & MySelection & "='" & MyFilter & "')" _
)
.Refresh BackgroundQuery:=False
End With
|