Книга: VBA для чайников
Основы межпрограммного взаимодействия
Основы межпрограммного взаимодействия
Первое правило очевидно; можно использовать объекты другого приложения, если оно установлено в системе. Если это условие выполнено, для работы с объектами приложения, поддерживающего стандарт СОМ, требуется выполнить ряд предварительных действий.
1. В редакторе Visual Basic добавить ссылку на объектную библиотеку внешнего приложения.
2. Объявить переменные для объектов, которые придется использовать в программе.
3. Создать экземпляры соответствующих объектов с помощью функции Сrеat eObject.
В следующих трех подразделах эти шаги рассматриваются детальнее.
Чтобы информировать Visual Basic об объектной модели внешнего приложения, нужно добавить и активизировать ссылку на объектную библиотеку этого приложения. В окне редактора Visual Basic выберите Tools?References, чтобы открыть диалоговое окно References (Ссылки).
Если Outlook установлена на вашем компьютере, объектная библиотека Outlook уже должна присутствовать в списке Available References (Доступные ссылки) диалогового окна References. Ее нужно найти в этом списке и установить флажок рядом с ее именем, чтобы библиотека стала доступной. Если нужной библиотеки в списке не оказалось, добавьте ссылку в список сами, воспользовавшись кнопкой Browse (Обзор).
Переменные для объектов из внешних приложений объявляются стандартным для VBA образом. Чтобы узнать, какие объекты внешнего приложения доступны, используйте либо обозреватель объектов редактора Visual Basic, либо файл справки этого внешнего приложения. Операторы следующего фрагмента программного кода объявляют переменные для объектов Outlook, которые предполагается позже использовать в программе:
Dim objOutlook As Outlook.Application
Dim objOLNamespace As Outlook.NameSpace
Dim colFolders As Outlook.Folders ' коллекция папок
Dim objPeopleFolder As Outlook.MAPIFolder
Dim colPeople As Outlook.Items ' коллекция контактов
Dim objPerson As Object ' один отдельный контакт
Dim strName As String
Объявление объектов только говорит о вашем намерении использовать их. В дальнейшем вы должны создать необходимые объекты с помощью операторов Set внутри подходящих процедур.
При создании объекта из внешнего приложения используется функция СrеateObject. Она открывает соответствующее приложение, которое и создает нужный объект. Возвращаемое функцией значение будет ссылкой на объект, которую можно присвоить подходящей переменной. А чтобы открыть внешнее приложение с уже готовым файлом или документом, используйте функцию GetObject.
Вот программный код процедуры из примера Outlook+Visio, создающей экземпляры нужных объектов:
Sub PeopleDiagram()
Set objOutlook = CreateObject("Outlook.Application")
' Используйте CreateObject("Outlook.Application.8")
' с другой версией Outlook
Set objOLNamespace = objOutlook.GetNamespace("MAPI")
Set colFolders = objOLNamespace.Folders ' все папки
Set objPeopleFolder = colFolders.Item("Personal Folders")
' определение переменных для движения внутрь папки
Set colFolders = objPeopleFolder.Folders
Set objPeopleFolder = colFolders.Item("Contacts")
Set colPeople = objPeopleFolder.Items
' вызов процедуры типа Sub, использующей данные Outlook
ChartAName
End Sub
Обратите внимание, что во многих случаях- и в этом примере тоже- функция СrеateObject нужна только один раз. После того как объект внешнего приложения создан, вы можете использовать его свойства и методы. Как правило, свойства включают другие объекты (в данном случае коллекция Folders, папки Personal Folders и Contacts, a также коллекцию объектов внутри папки Contacts ).
Приложение, которое вы открываете из своего программного кода, выполняется в скрытом виде - на экране оно не отображается. Это очень удобно, если вы хотите использовать в своей программе данные другого приложения, не раздражая при этом пользователя. Но иногда все же нужно показать приложение в его обычной форме. Тогда, в зависимости от приложения, нужно либо установить для свойства Visible значение True, либо использовать метод Display, как здесь: objPeopleFolder.Display
Теперь, наконец, вы готовы использовать объекты внешнего приложения в своей программе точно так же, как и те, которые пришли вместе с вашим VBA-приложением. Вот пример того, как это сделать в Visio при создании организационной диаграммы, использующей имена из папки Contacts, принадлежащей Outlook:
Sub ChartAName()
For Each objPerson In colPeople
strName = objPerson.FullName
...( программный код построения диаграммы Visio на основе этих данных)
Next
End Sub
Программный код на Web-странице не содержит этой процедуры, поскольку я не знаю наверняка, что у вас есть Visio. Вместо вызова этой процедуры в процедуре PeopleDiagram просто отображается диалоговое окно при каждом обращении к данным Outlook. (Правда, у вас может не оказаться также и Outlook, в таком случае данный пример вообще не будет работать.)
- ГЛАВА 1 Основы построения баз данных
- 4. Стадии бизнес-процесса взаимодействия с клиентами
- 4.9 Обеспечение взаимодействия устройств Fibre Channel
- Глава 1 Основы графологии
- Часть I Основы Ubuntu
- 2.10. Основы конфигурирования
- Нейрофизиологические основы различия «нравится» и «хочу»
- Основы интерфейса Access 2007
- 7.7.1. Основы безопасности
- 13.1. Основы резервного копирования
- 14.1. Основы безопасности
- Урок 1.4. Программа Блокнот. Основы работы с текстом