Основы офисного программирования и язык VBA


Совместная работа приложений. Создание объектов Application. Раннее и позднее связывание - часть 3


Теперь еще несколько общих слов о раннем и позднем связывании. Раннее связывание предпочтительнее по двум важным причинам: оно обеспечивает более быструю работу приложения и интеллектуальную поддержку при работе с объектом. Последнее означает, что появляется список доступных свойств и методов, как только ставится точка после имени объекта. При позднем связывании такая поддержка отсутствует, так как класс объекта не известен на этапе трансляции до начала выполнения программы. Следует заметить, что VBA не является чисто интерпретируемым языком. На этапе трансляции до выполнения программы проверяется наличие ошибок в программе, проводится распределение памяти и обеспечивается интеллектуальная поддержка объявленным переменным.

В заключение рассмотрим пример, иллюстрирующий работу трех приложений: Word, Excel и Access:

Public Sub WorkWithExcel() 'НЕ забудьте включить ссылку на Excel в меню References 'Объявление и создание объектов Excel.Application Dim MyXlApp As New Excel.Application 'Работа с приложением Excel With MyXlApp .Visible = True 'Excel появился на линейке и его можно раскрыть 'Добавить новую книгу .Workbooks.Add 'Теперь можно работать и с ячейками данной книги .Range("A1") = "Hello!" 'Идет работа с книгой .Range("B1") = "By-By" .Workbooks(1).Activate 'Закрываем открытую книгу MsgBox ("Закрываем рабочую книгу Excel?") .Workbooks(1).Close 'Будет задан вопрос о необходимости сохранения книги 'Закрываем приложение .Quit End With End Sub

Public Sub WorkWithAccess() 'НЕ забудьте включить ссылку на Access и Dao 3.6 в меню References 'Приложение Access и его компоненты: 'База данных, форма и путь к базе Dim MyAc As New Access.Application Dim MFDb As Database Dim FormPoetAges As Form Dim PathDb As String 'Открываем базу данных Access PathDb = "E:\O2000\CD2000\Ch1\AgeOfPoet.mdb" MyAc.OpenCurrentDatabase (PathDb) Set MFDb = MyAc.CurrentDb 'Открываем форму MyAc.DoCmd.OpenForm ("AgeOfPoets") Set FormPoetAges = MyAc.Forms("AgeOfPoets") MyAc.Visible = True FormPoetAges.SetFocus

'Закрываем базу данных MsgBox ("Закрываем базу данных Access?") MyAc.Quit End Sub

Пример 1.2.

Макросы WorkWithExcel и WorkWithAccess могут быть вызваны из приложения Word. В наших тестовых примерах мы вызывали их в ответ на щелчок соответствующих командных кнопок. Заметьте, второй пример довольно содержателен. Здесь показано, как, не выходя из документа Word, просматривать и редактировать данные формы, созданной в приложении Access для работы с базой данных.

На этом мы прервем знакомство с корневыми объектами Application. Помните, явно или неявно они всегда будут присутствовать в наших примерах.




Начало  Назад  Вперед



Книжный магазин