Автоматизация. Использование объектов Microsoft Word
Цель работы: приобретение навыков внедрения объектов других приложений в процедуры VBA посредством технологии автоматизации.
1 Теоретические сведения
Автоматизация, ранее известная как OLE-автоматизация, – это технология, позволяющая включать функциональные средства любого Windows-приложения в другое приложение посредством программного кода. Другими словами, автоматизация – это процесс управления одним приложением посредством другого. Для того чтобы использовать автоматизацию, необходимо располагать инсталлированным приложением, средствами которого вы хотите воспользоваться, и это приложение должно поддерживать технологию автоматизации. Большинство приложений полностью поддерживают автоматизацию. В этом случае говорят, что они открыты, т.е. доступны все коллекции их объектов, свойств, методов и событий. При работе со средствами автоматизации надо хорошо понимать роль и назначение каждого участвующего приложения: различают управляющее приложение, или приложение-клиент, и приложение-сервер. Приложение-клиент управляет приложением-сервером. Приложение-сервер открывает свои объекты, которые может использовать другое приложение. Многие приложения, которые поддерживают технологию автоматизации, имеют библиотеки объектов. Библиотека объектов содержит информацию, необходимую приложению-клиенту для управления объектами приложения-сервера. Для получения доступа к этой библиотеке надо создать на нее ссылку из управляющего приложения, такого как Excel. Для того чтобы Excel управлял приложением Microsoft Word, т.е. Word был приложением-сервером, надо создать ссылку на библиотеку его объектов. Для этого, находясь в редакторе Visual Basic, выполните команду Tools ® References (Сервис ® Ссылки). Откроется диалоговое окно References. Установите флажок Microsoft Word и щелкните на ОК. В текущий проект будет добавлена ссылка на эту библиотеку.
Задание ссылки на соответствующую библиотеку объектов – это необходимое, но недостаточное условие для использования объектов этой библиотеки. Нужно также с помощью процедуры создать экземпляр приложения-сервера. Для этого используется оператор CreateObject (Создать объект). Только после создания экземпляра приложения-сервера можно использовать все открытые объекты этого приложения, а также их свойства и методы. Dim y As Word.Application Set y = CreateObject(“Word.Application”) После создания экземпляра приложения-сервера можно использовать его объекты, свойства и методы точно также, как и объекты, свойства и методы Excel. Можно записать макрос в Word, а затем полученный код вставить в процедуру Excel. Даже в код при необходимости можно внести изменения. Рассмотрим создание простого приложения, вставляющего диапазон ячеек рабочего листа Excel в письмо, созданное в Word. В Word введем следующий текст: Менеджеру по продажам Посылаю Вам таблицу с итоговыми данными по объемам продаж. Если у Вас есть вопросы, то свяжитесь со мной. С уважением, Ф.И.О. Сохраните этот текст в файле Письмо. Затем необходимо в письмо вставить две закладки. Закладка – это поименованное место в документе Word. Для вставки закладки надо: - установить курсор в начало фразы, где необходимо вставить закладку; - выполнить команду Вставка ® Закладка, откроется диалоговое окно Закладка; - ввести имя закладки и щелкнуть на кнопке Добавить; - сохранить и закрыть документ. В нашем случае вставляем закладки в начало фразы “Менед-жеру по продажам” и перед “С уважением”. В Excel создаем таблицу (таблица 8.1), которая далее будет скопирована и вставлена в документ Письмо.
Таблица 8.1
Затем необходимо вернуться в Word. Открыть новый документ и записать макрос, который открывал бы документ Письмо и переходил к закладкам. Просмотрите код записанного макроса и удалите строки из процедуры так, чтобы у вас осталось следующее: Sub Данные_продажи () Documens.Open FileName: = “Письмо.doc” Selection.GoTo What: = wdGoToBookmark, Name: = “Регион” Selection.GoTo What: = wdGoToBookmark, Name: = “Данные” End Sub Этот код будет основой процедуры, которую мы создаем в Excel. Скопируйте эту процедуру в текущую рабочую книгу. Теперь надо создать экземпляр Word, и перед каждой строчкой процедуры поставить имя переменной, соответствующей экземпляру Word. Самый простой способ сделать это – применить оператор With. Sub Данные_продажи () Dim y As Word.Application Set y = CreateObject(“Word.Application”) With y .Documents.Open FileName: = “Письмо.doc” .Selection.GoTo What: = wdGoToBookmark, Name: = “Регион” .Selection.GoTo What: = wdGoToBookmark, Name: = “Данные” End With End Sub Добавим код, копирующий таблицу данных в Excel и вставляющий ее в документ Word. Sub Данные_продажи () Dim y As Word.Application Set y = CreateObject(“Word.Application”) With y .Visible = True 'В следующем операторе путь к файлу Письмо зависит от 'того, где вы сохранили этот файл. При необходимости вне- 'сите изменения в путь .Documents.Open FileName: = “C: \Мои документы\Письмо.doc” Worksheets(“Лист1”).Range(“B1”).Copy .Selection.GoTo What: = wdGoToBookmark, Name: = “Регион” .Selection.Paste Application.CutCopyMode = False Worksheets(“Лист1”).Range(“A3: D11”).Select Selection.Copy .Selection.GoTo What: = wdGoToBookmark, Name: = “Данные” .Selection.Paste Application.CutCopyMode = False End With End Sub В заключение перечислим этапы выполнения этого примера: - создание файла в приложении-сервере; - создание таблицы данных в Excel (приложении-клиенте); - запись макроса в приложении-сервере; - копирование процедуры Excel для создания экземпляра приложения-сервера.
2 Практическая часть
З а д а н и е 1 Создайте таблицу данных Excel, как показано на рисунке 8.1. Создайте текстовый документ Word, как на рисунке 8.2. Вставьте в этот документ необходимые закладки. Скопируйте информацию из таблицы данных Excel и вставьте ее в соответствующие места документа Word.
Рисунок 8.1 Рисунок 8.2 3 Контрольные вопросы
3.1 Какой оператор применяется для создания экземпляра приложения-сервера? 3.2 Истинно или ложно следующее утверждение: кроме объектов Excel и VBA в окне просмотра объектов можно просматривать только объекты библиотек, на которые созданы ссылки?
3.3 Истинно или ложно следующее утверждение: Excel можно использовать как приложение-клиент? 3.4 Как установить ссылку на библиотеку объектов?
Лабораторная работа 9
|