Настольная СУБД Access 2002

         

Открытие документа Word



Открытие документа Word

Для того чтобы открыть документ Word, можно использовать любой из перечисленных ранее способов создания экземпляров класса объекта автоматизации. Ниже приводятся примеры процедур VBA для открытия документа. В первой используется функция CreateObject (), а во второй — GetObject(). Для проверки кода этих процедур вы можете, так же как и при работе с объектами приложения Excel, использовать окно отладки.

Sub OpenDocument()

Dim wda As Word.Application



Set wda = CreateObject("Word.Application")

With wda

.Visible = True

.Documents.Open "C:\Doc\Letter.doc"

End With

'операции над документом wda.Quit Wda.Nothing

End Sub

В данном случае независимо от того, запущен ли уже Word, программа запустит еще один его экземпляр и в нем откроет файл Letter.doc. После того как все операции с документом закончены, нужно закрыть Word, для чего используйте метод Quit. Если при этом документ был изменен, то приложение Word выдаст сообщение, спрашивающее о том, нужно ли сохранить изменения. При этом программа приостанавливает выполнение и ждет указания пользователя. Таких ситуаций следует избегать.

Если все изменения делались программно, то лучше сначала закрыть документ, выполнив команду

wda.ActiveDocuments.Close False

Окно документа будет закрыто, при этом все изменения будут сохранены. Если же нужно, чтобы пользователь мог посмотреть сделанные программой изменения и при необходимости что-то откорректировать, можно не закрывать приложение в программе, а предоставить сделать это пользователю.

В следующей процедуре для открытия документа используется функция Getobject (). То есть сначала делается попытка проверить, не запущен ли уже Word. Если он еще не запущен, будет сгенерирована ошибка (код ошибки: 429). Программа перехватит эту ошибку и использует функцию CreateObject(), чтобы запустить Word. Если Word уже запущен, то новый документ будет открыт в этом же экземпляре приложения. Затем документ выводится на печать, после чего закрывается либо документ, либо приложение в зависимости от значения флага (modeFlag). Значение флага показывает, запускался ли экземпляр Word, или документ был добавлен к другим открытым документам:

Sub OpenPrintDocument() Dim wda As Word.Application

Dim modeFlag As Boolean

On Error GoTo ErrStartWord

modeFlag = True 'устанавливаем флаг операции

Set wda = GetObjectf, "Word.Application")

With wda

.Visible = True

.Documents.Open "C:\Doc\Letter.doc"

.ActiveDocument.Printout

Do While .BackgroundPrintingStatus <> 0

DoEvents "ждем, пока документ напечатается

Loop

If modeFlag Then

.ActiveDocument.Close 'закрываем только документ

Else

.Quit 'закрываем все приложение

End If

End With

Set wda = Nothing Exit Sub

ErrStartWord:

If Err.Number = 429 Then ' Word не запущен

Set wda = CreateObject("Word.Application")

modeFlag = False 'сбрасываем флаг

Resume Next 'возвращаемся к оператору, следующему за

'тем, который вызвал ошибку Else

'выдаем диалоговое окно с сообщением и номером ошибки

MsgBox Err.Description & " " & Err.Number, vblnformation

Exit Sub ' выходим из процедуры

End If

End Sub



Содержание раздела