Вопрос № 80185: Здравствуйте.
В БД Access макрос преобразовал встроеными средствами в процедуру.
Суть работы макроса в следующем:
1.запускает запрос на выборку из БД за период
2.таблицу с результатами запроса открывает в Эксель
3.закрывает в БД т...
Вопрос № 80.185
Здравствуйте.
В БД Access макрос преобразовал встроеными средствами в процедуру.
Суть работы макроса в следующем:
1.запускает запрос на выборку из БД за период
2.таблицу с результатами запроса открывает в Эксель
3.закрывает в БД таблицу с данными из запроса.
При запуске этой процедуры из книги Эксель запрос запускается(открываются поля для ввода начальной и конечной даты),а дальше все зависает. Через некоторое время появляется окно со сл тестом:"MS OF Excel ожидает завершения OLE-операции другим приложением." При запуске этой процедуры в БД все работает.
Подскажите как это победить. Код в приложении.
Отвечает: Alec Perle
Здравствуйте, Шмаров Сергей!
1. Чтобы понять, попробуйте запустить Excel, а потом выполнить функцию в Access.
Вы увидите, что файл с результатами запроса будет создан в ЗАПУЩЕННОМ экземпляре Excel'я.
То есть, когда функция запускается из Excel, Access "пытается" создать в нём (Excel'е) файл, но Excel "заблокирован", так как ждет окончания операции.
Можно "обмануть" систему, создав еще один экземпляр Excel до открытия базы данных, в котором и будет создаваться файл. См. приложение.
2. Если нет необходимости запускать макрос непосредственно из Access, можно немного упростить систему. Объект Access.Application позволяет воспользоваться свойством DoCmd. Т.е. вместо
.Run "Создание_Справки"
можно написать:
With .DoCmd
.SetWarnings False
.OpenQuery "Создание справки", acViewNormal, acEdit
.RunCommand acCmdOutputToExcel
.RunCommand acCmdClose
.SetWarnings True
End With
и "избавиться" от макроса в Access'е.
Само собой, не забыв запустить копию Excel, как оговорено выше.
Приложение:
--------- Пессимист - это хорошо информированный оптимист (а оптимист - хорошо проинструктированный пессимист)
Ответ отправил: Alec Perle (статус: 6-ой класс)
Ответ отправлен: 29.03.2007, 02:28 Оценка за ответ: 5 Комментарий оценки: Большое спасибо,все получилось и оказалось намного проще чем я предполагал.