Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 498
от 03.04.2007, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 250, Экспертов: 34
В номере:Вопросов: 1, Ответов: 1


Вопрос № 80185: Здравствуйте. В БД Access макрос преобразовал встроеными средствами в процедуру. Суть работы макроса в следующем: 1.запускает запрос на выборку из БД за период 2.таблицу с результатами запроса открывает в Эксель 3.закрывает в БД т...

Вопрос № 80.185
Здравствуйте.
В БД Access макрос преобразовал встроеными средствами в процедуру.
Суть работы макроса в следующем:
1.запускает запрос на выборку из БД за период
2.таблицу с результатами запроса открывает в Эксель
3.закрывает в БД таблицу с данными из запроса.
При запуске этой процедуры из книги Эксель запрос запускается(открываются поля для ввода начальной и конечной даты),а дальше все зависает. Через некоторое время появляется окно со сл тестом:"MS OF Excel ожидает завершения OLE-операции другим приложением." При запуске этой процедуры в БД все работает.
Подскажите как это победить. Код в приложении.

Приложение:

Отправлен: 29.03.2007, 00:41
Вопрос задал: Шмаров Сергей (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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
Комментарий оценки:
Большое спасибо,все получилось и оказалось намного проще чем я предполагал.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: support@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное