Использование технологии автоматизации для работы с пакетом Microsoft Office, страница 2

Примерами внешних серверов автоматизации являются приложения пакета Microsoft Office (Word, Excel, PowerPoint, Outlook, Access), в которых технология автоматизации реализуется путем использования языка Visual Basic for Application (VBA). Эти приложения являются полными серверами автоматизации, т.е. могут выполняться и как серверы автоматизации,  и как обычные приложения. При работе в качестве сервера автоматизации приложение предоставляет специальные объекты, методы и свойства, позволяющие управлять этим сервером из любого другого приложения.

Обмен информацией с приложениями пакета Microsoft Office может выполняться по технологии автоматизации с использованием одного из двух методов: позднего связывания или раннего связывания. Для приложений-клиентов, созданных средствами системы Borland C++ Builder, работа с сервером автоматизации почти не отличается от работы с обычным компонентом.

Использование позднего связывания

При использовании позднего связывания компилятору системы Borland C++ Builder не требуется никакой информации об объекте автоматизации. Для получения доступа к серверу автоматизации используется функция Borland C++ Builder

PACKAGE _di_IDispatch __fastcall CreateOleObject(const AnsiString ClassName);

С помощью параметра ClassName передается строковый идентификатор, связанный с объектом автоматизации. Функция CreateOleObject возвращает указатель на  интерфейс _di_IDispatch, который используется для связи с объектом автоматизации, и осуществляет запуск сервера автоматизации.

Переменная, которая будет являться указателем на  интерфейс, должна иметь тип Variant (изменяемый или заранее неизвестный тип) или OleVariant, специально предназначенный для работы с объектами автоматизации. После получения ссылки на интерфейс объекта автоматизации можно вызывать любые методы этого объекта.

Функция CreateOleObject находится в модуле COMObj, имя которого нужно указывать в директиве #include того модуля, который вызывает эту функцию.

Компилятор системы Borland C++ Builder не располагает информацией о методах и свойствах используемого программой объекта автоматизации, и если попытаться вызвать несуществующий метод или сослаться на несуществующее свойство, программа все равно будет откомпилирована без сообщений об ошибках. Ошибка обнаружится только во время выполнения программы, пользователь программы будет проинформирован об ошибке соответствующим сообщением.