Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2013, 18:00   #1
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию Ошибка 429 при использовании Call

Друзья,
есть процедура, которая в отдельности отлично запускается, т.е. вот эта:
Код:
Sub ВставкаОтчетаWord()
    GetObject(, "Word.Application").Run "ФормированиеОтчетов.ВставкаОтчетаИзExcel"
End Sub
Т.к. эта процедура является составляющим элементом, то при попытке вызова из другой процедуры выдает ошибку 429 "ActiveX component can't create object"
Код:
Sub ОткрытьФайл()
Dim oShell As Object
Set oShell = CreateObject("Shell.Application")
oShell.shellexecute ThisWorkbook.Path & "\Шаблон отчетов.docm"

Call ВставкаОтчетаWord 'Место ошибки!!

End Sub
Вместо команды Call пытался подставить GetObject(, "Word.Application").Run "ФормированиеОтчетов.ВставкаОтчетаИ зExcel" , но выдает ту же ошибку.

Последний раз редактировалось HenryO; 17.05.2013 в 18:03.
HenryO вне форума Ответить с цитированием
Старый 17.05.2013, 20:44   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Дело в том, что метод shellexecute не ждет выполнения команды, программа продолжается дальше, и в момент выполнения GetObject(, "Word.Application") Ворд еще не открыт.
Лучше контролировать открытие файла из программы:
Код:
Sub ОткрытьФайл()
Dim oWord As Object, bWordNotRunning As Boolean
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err Then 'Ворд не запущен
    Set oWord = CreateObject("Word.Application")
    bWordNotRunning = True
End If
On Error GoTo 0
oWord.documents.Open ThisWorkbook.Path & "\Шаблон отчетов.docm"

oWord.Run "ФормированиеОтчетов.ВставкаОтчетаИзExcel"

'...

If bWordNotRunning Then oWord.Quit 'если Ворд не был запущен - закрыть его
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 18.05.2013, 10:29   #3
HenryO
Пользователь
 
Регистрация: 10.04.2013
Сообщений: 21
По умолчанию

Спасибо за вариант решения проблемы.
У меня также получилось решить его вчера с помощью выдержки Паузы перед началом выполнения след.команды
Код:
Sub ГенерацияОтчетов()
Dim oShell As Object
Set oShell = CreateObject("Shell.Application")
oShell.shellexecute ThisWorkbook.Path & "\Шаблон отчетов.docm"

Application.Wait (Now + TimeValue("0:00:05"))
GetObject(, "Word.Application").Run "ФормированиеОтчетов.СохранениеОтчетов4"

End Sub
Но согласен, что выдержка паузы оценочный вариант, поэтому предпочтительнее, конечно, ваш вариант.
HenryO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании темплейта optimator Общие вопросы C/C++ 5 06.10.2011 14:44
Ошибка (Error 429)!!! Кто сталкивался??? Klim Bassenger Microsoft Office Excel 4 14.11.2010 01:19
Ошибка при использовании ICQClient Mihanches Работа с сетью в Delphi 2 04.10.2010 21:27
Ошибка при использовании CreateProcess Sadowod Общие вопросы Delphi 7 20.08.2010 17:43
Ошибка при использовании copyfile The Best Общие вопросы Delphi 20 22.07.2009 13:26