LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Вопрос по...
 Тема: Вопрос по удалению объекта
 
 15.06.2007 21:07:52
All
4316 сообщения
1-ый


Тема: Вопрос по удалению объекта
В модуле для автоматизации образую объект.

Public APPW As Word.Application

Затем в подпрограмме в В ЭТОМ ЖЕ МОДУЛЕ работаю с ним.
Подпрогамма вызывается из формы.

Sub My_sub ()
On Error GoTo NoHaveAPPW
'Здесь я работаю с APPW после чего печатаю документ
APPW.PrintOut
Exit Sub

NoHaveAPPW:
Select Case Err.Number

Case 91
strDOC_DOG = CurrentProject.Path & "\" & "ResumeSB.doc" ' Назначаем имя документа
Set APPW = New Word.Application ' Создаем документ

APPW.Visible = False ' Скрываем документ
APPW.Documents.Add 'Добавляем документ
Err.Clear
Resume
Case Else

MsgBox "Ошибка при печати " & Err.Description & " номер ошибки " & Err.Number
MsgBox "Ошибка при печати " & " источник ошибки " & Err.Source

Err.Clear
Exit Sub
End Select
End Sub

Эта подрограмма запускается из формы.
При выходе из формы, мне необходимо закрыть объект APPW
Из формы запускается подпрограмма CloseAPPWord
Call CloseAPPWord

расположена подпрограмма CloseAPPWord В ТОМ ЖЕ МОДУЛЕ, что и My_sub

Sub CloseAPPWord()
'On Error Resume Next 'Может здесь чего подправить???
If Err Then GoTo 999
APPW.Quit
Set APPW = Nothing
Exit Sub
999:
MsgBox "Закрытие" & Err.Description
Err.Clear
End Sub

Все работает, но только для одного цикла повтора. Образование APPW - затем его уничтожение. (Причем уничтожается на самом деле, Word-а нет)

При повторном запуске такой последовательности действий получаю ошибку из подпрограммы My_sub:

Ошибка при печати. The remote server machine does not exist or is unavailable номер ошибки 462

Ошибка при печати источник ошибки db1

Хотя APPW образуется. Заетем удалить его толком не удается. Получаю ошибку 91 из CloseAPPWord

Если закрыть Access, а затем снова повторить, то все опять работает, но только для одного цикла повтора.

Посоветуйте где надо подправить. Используется Access 2000, Word 2000, Win98.

Спасибо.
Евгений.



P.S. Клиенты автоматизации
Автор: Евгений от 0:00:00 Источник ...
 15.06.2007 21:07:52
ТимурРахимов
16 сообщения


RE: Вопрос по удалению объекта
Посмотрел я на код и очень удивился: в нём я не увидел фрагмента, которым должен создаваться экземпляр (instance) программы в памяти, вот примерно так:

Public APPW As Word.Application
Set APPW = CreateObject("Word.Application")
APPW.Visible = True

После этого я призадумался: а как вообще (хоть и с причудами) этот код работал? Почему Word всё-таки запускался и с ним устанавливалась связь? Пришлось немного порыться в MS Knowledge Base. Вот смотрите, это, по моему мнению, имеет отношение к вашему случаю (цитирую с сокращениями):

PRB: Automation Error Calling Unqualified Method or Property
ID: Q189618

SYMPTOMS
While running code that uses Automation to control Microsoft Word 97 or Word 2000, you may receive one of the following error messages:

Run-time error '-2147023174' (800706ba)
Automation error
-or-
Run-time error '462': The remote server machine does not exist or is unavailable

CAUSE
Visual Basic has established a reference to Word due to a line of code that calls a Word object, method, or property without qualifying it with a Word object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than once.

RESOLUTION
Modify the code so that each call to a Word object, method, or property is qualified with the appropriate object variable.

MORE INFORMATION
... When you write code to use a Word object, method, or property, you should always precede the call with the appropriate object variable. If you do not, Visual Basic uses a hidden global variable reference which it sets to the currently running instance. If Word is shutdown, or if the declared object variable is released, the hidden global variable will now reference an invalid (i.e., destroyed) object. When running the automation code again, calls to this hidden object variable will fail with the aforementioned error.



P.S. Клиенты автоматизации
Автор: Тимур Рахимов от 12.01.2004 2:33:51 Источник ...
 15.06.2007 21:07:52
All
4316 сообщения
1-ый


RE: Вопрос по удалению объекта
Я заменил строчку
Set APPW = New Word.Application

на
Set APPW = CreateObject("Word.Application")

Но ничего не получается. Я получаю все ту же ошибку: Run-time error '462': The remote server machine does not exist or is unavailable

Подскажите еще чего надо сделать.

Евгений.



P.S. Клиенты автоматизации
Автор: Евгений от 0:00:00 Источник ...
 15.06.2007 21:07:52
All
4316 сообщения
1-ый


RE: Вопрос по удалению объекта
Я заменил строчку
Set APPW = New Word.Application

на
Set APPW = CreateObject("Word.Application")

Но ничего не получается. Я получаю все ту же ошибку: Run-time error '462': The remote server machine does not exist or is unavailable

Подскажите еще чего надо сделать.

Евгений.



P.S. Клиенты автоматизации
Автор: Евгений от 0:00:00 Источник ...
 15.06.2007 21:07:52
All
4316 сообщения
1-ый


RE: Вопрос по удалению объекта
Я заменил строчку
Set APPW = New Word.Application

на
Set APPW = CreateObject("Word.Application")

Но ничего не получается. Я получаю все ту же ошибку: Run-time error '462': The remote server machine does not exist or is unavailable

Подскажите еще чего надо сделать.

Евгений.






P.S. Клиенты автоматизации
Автор: Евгений от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Вопрос по...
ПоискПоиск  Список форумовСписок форумов  
right