Познавательное

Автоматизация Word

  

Word, Excel, PowerPoint, Outlook и Access используют один и тот же язык программирования VBA, отличаясь между собой только объектной моделью (например, рабочая книга Excel представлена объектом Workbook, а документ Word— объектом Document). Каждое из перечисленных приложений может получить доступ к объектной модели другого приложения при условии, что последнее установлено на компьютере. Для доступа к объектной библиотеке Word из кода Excel VBA на нее необходимо установить ссылку посредством раннего или позднего связывания. Ранее связывание подразумевает создание ссылки на объект приложения во время компиляции программы, а позднее связывание — во время ее выполнения. В этой главе рассматривается доступ к объектной модели Word средствами Excel VBA. Чтобы познакомиться со структурой объектной модели Word или другого приложения, входящего в состав пакета Microsoft Office, воспользуйтесь диспетчером объектов редактора Visual Basic соответствующего приложения.

Раннее связывание
Код, созданный с применением раннего связывания, выполняется быстрее, чем код, созданный с применением позднего связывания. Раннее связывание предполагает создание ссылки на объектную библиотеку Word на этапе разработки программного кода. Это делает объекты, свойства и методы Word доступными в диспетчере объектов Visual Basic, что, в частности, позволяет отображать динамические подсказки, как показано на рис. 16.1.

Автоматизация Word

Рис. 16.1. Раннее связывание позволяет существенно упростить знакомство с синтаксисом объектной модели Word

Недостатком раннего связывания является требование обязательного присутствия в системе объектной библиотеки, на которую создается ссылка. Именно поэтому макрос, использующий объектную модель Word 2003 и раннее связывание, не удастся выполнить на компьютере с Word 2002. Чтобы добавить ссылку на объектную библиотеку Word с помощью редактора Visual Basic, выполните следующие действия.
1. Выберите в меню редактора Visual Basic команду Tools^References (Сервис=>Ссылки).
2. В списке Available References (Доступные ссылки) установите флажок рядом со ссылкой на библиотеку Microsoft Word 11.0 Object Library (рис. 16.2).
3. Щелкните на кнопке ОК.
На заметку
Отсутствие объектной библиотеки Word в списке Available References означает, что приложение не установлено на компьютере. Если в списке доступных ссылок содержится объектная библиотека другой версии Word (например, 10.0), значит на компьютере установлена другая версия этого текстового редактора.

Добавив ссылку на библиотеку, можно начинать объявлять переменные, используя типы из объектной модели Word. Если в качестве типа переменной
указать тип Object, это приведет к использованию позднего связывания.
Автоматизация Word

Рис. 16.2. Выберите требуемую объектную библиотеку в списке Available References

Совет
В поисках ссылки на тип объекта Excel последовательно просматривает все подключенные библиотеки. Если нужная ссылка содержится более чем в одной библиотеке. Excel выберет ссылку, встретившуюся первой. Повлиять на выбор той или иной библиотеки можно путем изменения ее приоритета в списке Available References.

Sub WordEarlyBinding()
'  Раннее связывание.
Dim wdApp As Word.Application
Dim wdDoc As Document
Set wdApp = New Word.Application
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path &
" Автоматизация Word.doc")
wdApp.Visible = True
Set wdApp = Nothing
Set wdDoc = Nothing
End Sub

Макрос WordEarlyBinding открывает существующий документ Word. Переменная wdApp используется для обращения к объекту Word.Application (аналог объекту Application в Excel VBA), а переменная wdDoc — для обращения к объекту Document. Для создания нового экземпляра Word используется выражение New Word. Application. После создания экземпляра Word освободите память, занимаемую переменными wdApp и wdDoc, присвоив каждой из них значение Nothing.
Совет
Созданный экземпляр Word не отображается на экране, если в момент выполнения макроса в системе отсутствует другая активная копия Word. Чтобы вывести окно Word на экран, присвойте свойству Visible объекта Word. Application значение True.


Ошибка компиляции: отсутствие библиотеки
Если объектная библиотека Word, на которую была создана ссылка, отсутствует в системе, Excel не сможет откомпилировать макрос и отобразит сообщение об ошибке. В списке Available References (Доступные ссылки) отсутствующая библиотека будет отмечена словом "MISSING" ("Отсутствует"), как показано на рис. 16.3.
Автоматизация Word

Рис. 16.3. Excel не сможет откомпилировать макрос, если требуемая объектная библиотека отсутствует в системе

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


Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.