
- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 2. Основы офисного программирования
- •Оглавление
- •Глава 6. Использование Win32 api 113
- •Глава 7. Использование шаблонов и надстроек 118
- •Глава 8. Разработка приложений с помощью Excel 122
- •Глава 9. Разработка приложений с помощью Word 223
- •Глава 10. Использование Automation при интегрировании компонентов Microsoft Office 256
- •Глава 11. Организация доступа к внешним данным 279
- •Глава 12. Общие рекомендации по разработке приложений 297
- •Глава 13. Разработка справочной системы 298
- •Глава 14. Дополнительные рекомендации 301
- •Пояснительная записка
- •Уровень предварительной подготовки слушателей
- •Образовательные цели и задачи
- •Знания и навыки, получаемые в ходе изучения курса
- •Содержание занятий
- •Вопросы для самостоятельного изучения
- •Содержание лабораторных работ
- •Итоговые работы
- •Введение
- •Глава 1.Общая характеристика возможностей vba
- •Глава 2.Основные принципы разработки приложений
- •Глава 3.Основные правила разработки интерфейса
- •Глава 4.Visual Basic для приложений
- •Глава 5.Введение в язык и редактор Visual Basic
- •5.1.Окно Редактора Visual Basic
- •5.2.Основные правила записи программ на vba
- •5.2.1. Описания в программах на языке vba
- •5.2.2. Структуризация программ vba и правила записи кода процедур
- •5.2.3. Использование параметров
- •5.2.4. Типы данных vba
- •5.2.5. Описания переменных
- •5.2.6. Объекты в программах на vba и объектные переменные
- •5.2.7. Создание объектов пользователя
- •5.2.8. Описание и использование констант
- •5.2.9. Массивы в vba
- •5.2.10. Описание типов данных пользователя
- •5.2.11. Запись выражений на vba
- •5.2.12. Рекурсивные вычисления
- •5.2.13. Процедуры-подпрограммы
- •5.2.14. Процедуры-функции
- •5.2.15. Процедуры-свойства
- •5.2.16. Создание процедур
- •5.2.17. Управляющие структуры vba и события
- •5.3.Запуск программ
- •5.4.Отладка программ
- •5.5.Обработка ошибок
- •5.6.Преобразования типов
- •5.7.Функции для работы с датами и временем
- •5.8.Управление файлами
- •5.9.Функции проверки
- •5.10.Функции работы со строками
- •5.11.Взаимодействие с пользователем
- •5.12.Пользовательские формы и диалоговые окна
- •5.13.Создание пользовательских меню и панелей инструментов
- •5.14.Разработка контекстного меню
- •5.15.Открытие проектов, экспорт и импорт
- •Глава 6.Использование Win32 api
- •Глава 7.Использование шаблонов и надстроек
- •Глава 8.Разработка приложений с помощью Excel
- •8.1.Иерархия объектов Excel
- •8.2.Обзор основных объектов Excel
- •8.2.1. Объект Application
- •8.2.2. Объект Workbook
- •8.2.3. Объект WorkSheet
- •8.2.4. Объект Range
- •8.2.5. Графические объекты
- •8.2.6. Элементы управления и обработка событий
- •8.3.Представление данных и вычисления в таблицах Excel
- •8.3.1. Ссылки на ячейки рабочих листов Excel
- •8.3.2. Работа с формулами
- •8.3.3. Использование функций
- •8.3.4. Создание пользовательских функций рабочего листа
- •8.3.5. Массивы Excel
- •8.3.6. Определение связей между таблицами
- •8.3.7. Консолидация данных
- •8.3.8. Форматирование данных в таблицах
- •8.4.Анализ данных и подведение итогов
- •8.4.1. Создание сводных таблиц
- •8.4.2. Подведение промежуточных итогов
- •8.4.3. Определение частичных сумм
- •8.4.4. Создание диаграмм
- •8.4.5. Работа со структурой данных
- •8.5.Подбор параметров и поиск решения
- •8.6.Использование сценариев
- •8.7.Поиск и отбор данных в таблицах Excel
- •8.7.1. Использование автофильтра
- •8.7.2. Работа с расширенным фильтром
- •8.7.3. Поиск данных по подписям строк и столбцов
- •8.8.Упорядочение данных в таблицах
- •8.9.Защита приложений Excel
- •8.9.1. Защита от ошибок при вводе данных
- •8.9.2. Защита данных от несанкционированного доступа
- •Глава 9.Разработка приложений с помощью Word
- •9.1.Модель объектов Word
- •9.1.1. Объект Document
- •9.1.2. Другие дочерние объекты приложения Word
- •9.2.Работа с полями
- •9.3.Переменные документа
- •9.4.Использование формул в документах Word
- •9.5.Использование элементов управления в документах Word
- •9.6.Создание шаблонов документов на основе таблиц
- •9.7.Защита документов Word и кода
- •Глава 10.Использование Automation при интегрировании компонентов Microsoft Office
- •10.1.Технология ActiveX
- •10.2.Компонентная модель объектов, внедрение и связывание
- •10.3.Создание объектов Automation
- •10.4.Получение доступа к объекту
- •10.5.Пример вычислений в Access с помощью Excel
- •10.6.Управление связанными и внедренными объектами с помощью программного кода
- •Глава 11.Организация доступа к внешним данным
- •11.1.Доступ к данным из клиентских приложений
- •11.2.Интерфейс odbc
- •11.3.Использование dao для доступа к данным
- •11.3.1. Модель объектов dao
- •11.3.2. Создание рабочей области и открытие источника данных
- •11.3.3. Исследование структуры таблиц бд
- •11.3.4. Операции над данными
- •11.4.Интеграция данных и работа в сети
- •11.4.1. Доступ к данным Excel из субд Access
- •11.5.Выбор метода доступа к данным
- •Глава 12.Общие рекомендации по разработке приложений
- •Глава 13.Разработка справочной системы
- •13.1.Использование всплывающих подсказок
- •13.2.Контекстная справка «Что это такое?»
- •13.3.Подготовка файла справки
- •Глава 14.Дополнительные рекомендации Установка приложения
- •14.1.Повышение эффективности работы приложения
- •Приложение 1. Система автоматизации подготовки документов на основе пакета Microsoft Office
- •Требования к системе Office case
- •Интеллектуальность документа
- •Однократный ввод данных и их совместное использование
- •Дружественный интерфейс – «ориентация на человека»
- •Мобильность
- •Независимость от версии Microsoft Office
- •Поддержка языка разметки документов xml
- •Общий сценарий использования
- •Структура Office case
- •Структура скрытого раздела документа
- •В. Таблица ограничений
- •Подсистемы программного проекта документа Менеджер закладок
- •Менеджер классификаторов
- •Подсистема управления интерфейсом пользователя
- •Подсистема контроля данных
- •Подсистема информационного обмена
- •Дизайнер системы документов
- •Редактор классификаторов
- •Редактор правил
- •Редактор закладок
- •Редактор блоков данных
- •Пример применения Office case Постановка задачи
- •Реализация Документы «Подсистемы автоматизации подготовки отчетов»
- •Требования к квалификации пользователей
- •Установка приложения и подготовка к работе
- •Интерфейс первичных документов
- •Интерфейс сводных документов
- •Приложение 2. Автоматизированное рабочее место «Оператор автозаправочной станции»
- •Разработка структуры рабочей книги
- •Настройка пользовательского интерфейса
- •Разработка экранных форм
- •Приложение 3. Автоматизация заполнения бланка с помощью программы текстового процессора Word Постановка задачи
- •Разработка документа
- •Разработка экранной формы
- •Список литературы
10.6.Управление связанными и внедренными объектами с помощью программного кода
Для работы со связанными и внедренными объектами можно использовать программный код, с помощью которого можно устанавливать ссылки на материалы, созданные в другом приложении, заблокировать ссылки, отредактировать или обновить ссылки, чтобы они указывали на другие источники. Кроме того, можно создавать внедренные объекты, редактировать их.
В приложении-клиенте можно активизировать внедренный объект с помощью семейства OLEObjects.
Управление всеми связанными и внедренными объектами (рисунками, диаграммами, таблицами и т.п.) осуществляется сходными средствами. Приведенный ниже программный код демонстрирует возможности по созданию таких объектов и управлению ими.
Sub InsertLinkedObject(); Const Path = “ПолноеИмяГрафическогоФайла” Dim OLEObj As OLEObject Set OLEObj = ActiveSheet.OLEObjects.Add _ (FileName:=Path, Link:=True) OLEObj.Name = "Picture1" I = OLEObj.Index MsgBox "На активный лист вставлен рисунок. " _ & "Его индекс=" & Trim(Str(I)) _ & ". Его имя - " & OLEObj.Name End Sub
При выполнении данного макроса в Excel на активном рабочем листе размещается рисунок и происходит связывание данного объекта с исходным графическим файлом, который создан в графическом редакторе (например, Paint). При редактировании данного рисунка в исходном файле изменяется и внедренный объект (при обновлении связи).
Для внедрения объекта на рабочий лист (без установки связи с исходным файлом) достаточно указать значение аргумента Link равным False.
Для редактирования объекта, вставленного на рабочий лист, можно выполнить метод Activate для этого объекта:
Объект.Activate
в качестве ссылки на объект может быть указана объектная переменная или объект может быть выбран из семейства объектов на рабочем листе по индексу (по имени):
РабочийЛист.OLEObjects(Индекс)
Аналогично осуществляется работа с другими объектами, располагаемыми на рабочем листе.
Вставить рисунок из файла на рабочий лист можно также с помощью оператора вида:
ActiveSheet.Pictures.Insert(“ПолноеИмяГрафическогоФайла”)
Для редактирования такого рисунка его можно выделить с помощью оператора
ActiveSheet.Shapes(Индекс).Select
и внести изменения с помощью панели инструментов «Настройка изображения».
Средства управления различными объектами можно более подробно изучить с помощью справочной системы. Найти нужные методы можно также, записав макрос с интересующей последовательностью операций.
Для размещения рисунка в документе Word можно было бы использовать следующий оператор:
Set OLEObj = ActiveDocument.Shapes.AddPicture _ (Anchor:=Selection.Range, _ FileName:="ПолноеИмяГрафическогоФайла", _ LinkToFile:=True, SaveWithDocument:=True)
или оператор
Set OLEObj = ActiveDocument.Shapes.AddOLEObject _ (Anchor:=Selection.Range, _ ClassType:="Paint.Picture", _ FileName:=" ПолноеИмяГрафическогоФайла ", _ LinkToFile:=True, DisplayAsIcon:=False)
где переменная OLEObj может иметь тип Object. Эту переменную можно использовать для выполнения последующих действий над вставленным в документ объектом.
Внедрить рабочий лист Excel в документ Word можно с помощью оператора вида
Set OLEObj = ActiveDocument.Shapes.AddOLEObject _ (Anchor:=Selection.Range, _ ClassType:="Excel.Sheet", _ FileName:="", LinkToFile:=False, _ DisplayAsIcon:=False)
связь с файлом в данном случае не устанавливается, рабочий лист создается «на месте».
Внедренный рабочий лист можно отредактировать «на месте», выполнив следующий оператор:
ActiveDocument.Shapes(Индекс).OLEFormat.DoVerb _ VerbIndex:=wdOLEVerbPrimary
или с помощью оператора
ActiveDocument.Shapes(Индекс).OLEFormat.DoVerb _ VerbIndex:=wdOLEVerbOpen
который запускает Excel для работы с внедренным в активный документ Word рабочим листом. В качестве индекса может использоваться номер или имя объекта.
Доступ к объекту можно получить через объектную переменную, которой предварительно нужно присвоить значение с помощью оператора Set при создании объекта (как это было сделано в приведенных выше примерах) или при его выборе:
Set OLEObj = ActiveDocument.Shapes(Индекс)
Более подробно синтаксис использованных в примерах операторов, назначение параметров и их возможные значения можно изучить, воспользовавшись информацией, предоставляемой справочной системой.
В приложении Microsoft Office можно использовать код другого приложения. Такая необходимость возникает, когда в документ приложения включен объект, созданный другим приложением. Тогда для выполнения операций над данным объектом в контроллере Automation, управляющем составным документом, в который включен объект, необходимо обратиться за услугами к серверу Automation, обслуживающему этот объект.
Для исполнения кода сервера Automation в процедуре контроллера Automation необходимо:
Загрузить нужную библиотеку объектов сервера, выполнив в меню Сервис редактора VBA команду Ссылки.
Добавить код, проверяющий наличие уже запущенного экземпляра сервера Automation.
Написать код, использующий Automation, за кодом получения ссылки на объект Automation.
При написании кода следует учитывать, что есть инструкции и приемы, поддерживаемые только сервером, которые нельзя исполнить в контроллере.
Код сервера Automation можно перенести в процедуру контроллера через буфер. А для сервера код можно сгенерировать, воспользовавшись макрорекодером.