Чтобы создать объект для использования в операциях автоматизации, нужно сначала создать экземпляр его класса и присвоить ссылку на него объектной переменной. Однако создать можно не любой объект из объектной модели приложения-сервера, а только глобальные объекты
(см. разд. "Использование объектов и семейств" гл. 13).
Таким глобальным объектом для всех объектных моделей приложений семейства Microsoft-Office является объект Application, который находится на вершине иерархии объектов. Однако есть и другие глобальные объекты, например в Microsoft глобальным объектом является workbook. Это позволяет создавать данный объект непосредственно, не используя ссылку на объект Application. Напомним, что узнать, какие свойства моделей объектов являются глобальными, можно, используя окно просмотра объектов в редакторе VBA. Выберите в раскрывающемся списке
Project/Dbrary
нужную библиотеку, а затем выберите элемент
<globals>
в списке
Classes.
Существует несколько способов создания экземпляра класса объекта.
Dim objExl As New Excel .Application.
При использовании ключевого слова New для создания нового экземпляра класса Application запускается соответствующее приложение (например, Word или Excel). Если это приложение уже запущено, то, чтобы не запускать второй экземпляр, лучше использовать для создания нового экземпляра класса функцию GetObject () (см. ниже в этом же списке).
Замечание
Чтобы использовать ключевое- слово New для создания экземпляра класса объекта автоматизации, необходимо предварительно добавить ссылку библиотеки объектов приложения сервера в диалоговом окне редактора VBA
References
(Ссылки).
Set docObj = CreateObject ( "Word. Application" )
Объектная переменная в данном случае может быть объявлена как object, и тогда ссылку на библиотеку объектов Microsoft Word устанавливать не надо. А может быть объявлена так:
Dim docObj As Word. Application.
В этом случае должна быть обязательно установлена ссылка на библиотеку объектов Microsoft Word 10.0 Object Library.
Замечание
Если на компьютере установлено несколько версий Microsoft Office, то можно указать номер версии приложения, которое будет использоваться при автоматизации, например
Set docObj = CreateObject("Word.Application.10").
Необязательный аргумент <путь> определяет полный путь к существующему файлу и используется тогда, когда нужно обратиться к объекту, находящемуся в уже существующем файле.
Аргумент <класс>, как и в других случаях, определяет тип открываемого объекта автоматизации и имеет структуру <имяПриложения>. <типОбъекта>.
Обязательно должен быть указан хотя бы один из аргументов функции. Если первый аргумент опущен, то второй должен определять объект Application соответствующего приложения, например
Set objXL = Getobject (,"Excel.Application").
Аргумент может быть опущен, если в реестре Windows существует связка расширения файла с объектом приложения. Например, в случае Microsoft Excel файлы xls по умолчанию имеют объектный тип Excel .Workbook. Это означает, что если не указывать аргумент <класс>, то будет создана ссылка на объект Workbook, представленный указанным в первом аргументе файлом.
После того как создан объект автоматизации Application или другой глобальный объект, через него можно получить доступ ко всем остатьным семействам и объектам соответствующей модели объектов стандартным способом
(см. разд. "Использование объектов и семейств" гл. 13)
и работать с ними из программы VBA Access точно так же, как и с другими объектами — считывать и устанавливать значения свойств и вызывать методы.
Совет
Для того чтобы легче было создавать код для работы с объектами Word или Excel, вспомните о таком замечательном средстве этих приложений, как запись макросов. С помощью записи макросов можно выполнить все необходимые действия, используя интерфейс пользователя, затем просмотреть сгенерированный код VBA и встроить этот код в свою процедуру VBA, только слегка подправив его.
После того как все необходимые операции с объектами приложения-сервера выполнены, эти объекты следует закрыть, чтобы освободить занимаемую ими память. Большинство объектов поддерживают для этого методы close или Quit. Кроме того, следует освободить объектную переменную, присвоив ей значение Nothing.
Ниже будет приведено несколько примеров того, как в коде VBA можно управлять объектами Office, в частности будут рассмотрены операции с рабочим листом Microsoft Excel и передача данных в Microsoft Word.