|
|
|||||||||||||||||||||||||||||
|
Интеграция Access с другими компонентами офисаИсточник: Leadersoft
Программируя в Access не стоит забывать, что он является частью пакета Microsoft Office, поэтому один из плюсов MS Access как средства разработки - интегрированность с такими мощными приложениями как Word, Excel, PowerPoint, Outlook. Конечно, получить доступ к ним можно не только при помощи Access, но начиная с версии MS Office 2000, все они имеют один общий язык программирования - VBA. И в этой серии статей рассмотрим примеры использования такой интеграции, или как ее еще называют - автоматизации. Автоматизация (ранее известная как OLE-автоматизация - OLE Automation) - это одно из наиболее важных средств технологии ActiveX, позволяющее программно управлять объектами из других приложений. И это основное средство, с помощью которого можно интегрировать функциональные возможности различных приложений. Приложения, поддерживающие автоматизацию, делятся на две категории: клиенты автоматизации и серверы автоматизации. Причем некоторые приложения могут быть только клиентами либо только серверами автоматизации, но есть и такие (и к ним относится Microsoft Access), которые могут Клиенты и серверы автоматизацииПри интеграции двух приложений одно предоставляет свои объекты для использования, а другое использует объекты первого приложения.
Через объекты автоматизации приложение - сервер открывает доступ другим программам к тем своим функциям, которые могут быть им полезны. Например, текстовый редактор может открывать другим программам доступ к проверке орфографии, служба связи - доступ к созданию и отправке сообщений. Это позволяет разработчикам ускорить процесс разработки своих приложений, благодаря использованию готовых функций сервера. Для программного управления объектом автоматизации из любого приложения Microsoft Office необходимо:
Но можно использовать объекты сервера автоматизации и не устанавливая ссылку на конкретную библиотеку объектов, однако в этом случае программа будет работать медленнее. Это связано с тем, что после установки ссылки на библиотеку, при объявлении объектной переменной, можно указать ее конкретный тип, если же ссылка отсутствует, то для этой переменной придется указать обобщенный тип - Object. Microsoft Access как клиент автоматизацииЧтобы создать объект для использования в операциях автоматизации, нужно сначала создать экземпляр его класса и присвоить ссылку на него объектной переменной. Однако создать можно не любой объект из объектной модели приложения-сервера, а только глобальные объекты. Таким глобальным объектом для всех объектных моделей приложений семейства Microsoft Office является объект Application, который находится на вершине иерархии объектов. Для того чтобы узнать, какие свойства моделей объектов являются глобальными, можно воспользоваться окном просмотра объектов в редакторе VBA - Object Browser (запускается например так: откройте любой модуль и нажмите F2).
Функция CreateObject () создает ссылку на новый экземпляр класса автоматизированного объекта. Значение, возвращаемое этой функцией, должно быть присвоено объектной переменной с помощью оператора Set. Например, названным оператором открывается приложение Word, и ссылка на него присваивается объектной переменной docobj. При этом, даже если Word уже был открыт, будет запущен еще один его экземпляр:
Объектная переменная в данном случае может быть объявлена как Object, и тогда ссылку на библиотеку объектов Microsoft Word устанавливать не надо. А может быть объявлена так:
В этом случае должна быть обязательно установлена ссылка на библиотеку объектов Microsoft Word **.0 Object Library (** показывает, что для разных версий офиса разные значения: 10.0, 11.0, 12.0 - для соответственно офисов ХР, 2003, 2007). Если на компьютере установлено несколько версий Microsoft Office, то можно указать номер версии приложения, которое будет использоваться при автоматизации, например:
Этот способ используется для того, чтобы получить ссылку на уже существующий экземпляр класса, т. е. для доступа к существующим документам, хранящимся в файлах, или для доступа к объекту Application уже запущенного приложения-сервера. Функция Getobject () имеет следующий синтаксис:
Обязательно должен быть указан хотя бы один из аргументов функции! Рассмотрим три варианта написания функции:
здесь опускается первый параметр - тогда функция работает подобно двум вышесказанным - просто для создания экземпляра класса объекта.
здесь указаны оба параметра - путь к файлу и имя приложения. В этом случае запускается файл Лист.xls
Для того чтобы легче было создавать код для работы с объектами Word или Excel, вспомните о таком замечательном средстве этих приложений, как запись макросов. С помощью записи макросов можно выполнить все необходимые действия, используя интерфейс пользователя, затем просмотреть сгенерированный код VBA и встроить этот код в свою процедуру VBA, только слегка подправив его. Например: открываем файл excel, выбираем Сервис - Макрос - Начать запись. В появившемся диалоговом окне присваиваем имя макросу и жмем «ОК». Далее делаем свои дела - форматируем ячейки, изменяем данные - все что угодно. Последовательность действий записывается в специальный модуль в виде команд VBA. Жмем остановить запись. Затем Сервис - Макрос - Редактор Visual Basic и в группе Modules находим новый модуль. Открываем и смотрим, как все что вы делали выглядит на VBA. После того как все необходимые операции с объектами приложения-сервера выполнены, эти объекты следует закрыть, чтобы освободить занимаемую ими память. Большинство объектов поддерживают для этого методы close или Quit. Кроме того, следует освободить объектную переменную, присвоив ей значение Nothing. В прилагаемом к статье примере показаны варианты открытия документов Word, Excel, Power Point. Для разнообразия для каждого документа использован один из трех способов открытия. Но, разумеется, любой из документов можно открыть любым из способов. Пример качать здесь… PS: Пример сделан в Access 2002. При открытии его в Access 2000 нужно будет через Tools - References переопределиить ссылки на Word, Excel и Power Point с 11.0 на 10.0 Ссылки по теме
|
|