
- •Системное и прикладное программное обеспечение
- •Введение
- •Ввод данных. Логика условных операторов. Циклические вычисления
- •1.3 Циклы
- •1.7 Метод InputBox
- •Работа с макросами
- •Экранные формы. Автоматизация экранных форм
- •1.1.2 Элемент Надпись (Label)
- •1.1.3 Элемент Кнопка (CommandButton)
- •1.1.7 Элемент Полоса прокрутки (hScrolBar и vScrolBar)
- •1.1.8 Элемент Список (ListBox)
- •1.1.9 Элемент Комбинированное поле (ComboBox)
- •1.1.10 Массив элементов управления
- •2 Практическая часть
- •Меню и панели инструментов
- •Vba позволяет в Excel настраивать встроенные и создавать собственные управляющие панели.
- •2 Практическая часть
- •Управление приложением Excel с помощью vba
- •1.2 Объект Workbook
- •1.3 Объект Worksheet
- •1.4 Объект Range
- •Автоматизация. Использование объектов Microsoft Word
- •Доступ к данным с помощью ado
- •Процедуры обработки событий и надстройки
- •1.1 Где хранятся процедуры обработки событий
- •1.3 Процедуры, выполняемые при наступлении событий
- •1.4 Создание надстроек Excel
- •Литература
- •Содержание
Автоматизация. Использование объектов 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
Регион |
Москва |
|
|
|
|
|
|
Торговый представитель |
Апельсины |
Лимоны |
Яблоки |
Иванов |
1250 |
7410 |
230 |
Васильев |
1245 |
963 |
362 |
Велисов |
1560 |
8520 |
563 |
Смитов |
3350 |
7894 |
123 |
Брунин |
2643 |
8945 |
456 |
Пенкин |
7410 |
4561 |
159 |
Киндасов |
8520 |
1230 |
753 |
Спагетин |
2369 |
1120 |
999 |
Затем необходимо вернуться в 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