- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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.Использование Automation при интегрировании компонентов Microsoft Office
Возможность построения пользовательских приложений на основе существующих программных компонентов позволяет разработчикам создавать новые инструменты и приложения с минимальными затратами.
10.1.Технология ActiveX
Технология ActiveX обеспечивает мощные средства разработки приложений: внедрение объекта из одного приложения в документ, созданный другим приложением с возможностью его редактирования на месте и Automation, с помощью которого можно программным путем устанавливать свойства, вызывать методы и обрабатывать события как для внедренных объектов, так и для объектов других (внешних) приложений.
ActiveX – это технология, разработанная корпорацией Microsoft, широко применяемая в качестве открытого стандарта, совместного использования данных различными приложениями. Любой разработчик имеет прямой доступ к спецификации (описанию) ActiveX и может создавать приложения, удовлетворяющие требованиям этой спецификации. Приложения могут поддерживать эту технологию в различной степени (например, программный продукт может поддерживать только возможность редактирования объектов на месте, но не поддерживать Automation).
Технологию ActiveX можно представить как механизм, позволяющий рассматривать приложения как набор объектов, которые можно использовать при программировании. Работая с несколькими приложениями, поддерживающими ActiveX, программист имеет дело с несколькими наборами объектов, каждый из которых представляет отдельное приложение. Чтобы из одного приложения можно было получить доступ к другим приложениям посредством ActiveX, оно должно удовлетворять следующим требованиям: приложение должно быть написано в соответствии со спецификацией ActiveX и приложение должно быть надлежащим образом установлено и зарегистрировано в системном Реестре Windows.
С введением технолог8ии ActiveX фирма Microsoft ввела также новую терминологию программируемых объектов: термин «ActiveX» во многих случаях заменяет термин «OLE» (например: вместо «объект OLE» говорят «компонент ActiveX» или «объект ActiveX», вместо «OLE Automation» – «ActiveX Automation» или просто «Automation»).
Преимущества ActiveX проявляются при объединении в одном проекте наборов объектов, представляющие различные приложения. ActiveX дает возможность разработчикам помещать (или внедрять) объект, созданный в одном приложении, в документ, созданный другим приложением.
10.2.Компонентная модель объектов, внедрение и связывание
Компонентная модель объектов (COM – Component Object Model), являющаяся базовым элементом технологии ActiveX фирмы Microsoft, позволяет пользователям создавать «составные» документы, а разработчикам – «составные» приложения. В составных документах могут содержаться материалы, созданные с помощью различных приложений, а в составных приложениях – различные объекты (из стандартных библиотек или пользовательские), помогающие создать такие материалы. Например, приложение, созданное на основе Access, может использовать объекты Excel в качестве объектов, выполняющих финансовые расчеты.
Automation является одним из наиболее важных средств ActiveX. Это средство позволяет применять в приложении подпрограммы, управляющие объектами в другом приложении. Более ранняя технология организации взаимодействия двух приложении называлась DDE (Dynamic Data Exchange). При использовании DDE приложения вступали для обмена информацией в диалог. Но при таком способе организации взаимодействия приложения работали медленно. Automation является значительно более быстрым и легким в использовании средством.
Ключевым понятием, лежащим в основе всех интегрируемых приложений, является служба (сервис). Приложение, поддерживающее Automation (OLE Automation), можно рассматривать как набор служб, которыми это приложение может пользоваться. «Специализация» продуктов семейства Microsoft Office такова:
Access – службы базы данных (СУБД), просмотр и ввод данных, формы, отчеты;
Excel – службы расчетов, просмотра, финансового анализа и представления данных;
Word – службы текстового процессора и настольной издательской системы, создание отчетов;
PowerPoint – службы представления информации, презентации;
Office Binder – службы хранения и использования данных, интеграции документов;
Microsoft Outlook – службы управления информацией, электронная почта, управление заданиями, база контактов, планирование групповой работы;
Project – управление проектами;
Microsoft Internet Explorer – службы просмотра Web.
Ценой удобства доступа к такому широкому набору служб является производительность. Более высокопроизводительные приложения можно построить с использованием объектов, написанных на языках типа C/C++.
Приложение поддерживает Automation одним из двух способов: приложение может быть объектом Automation (сервер Automation – это приложение, предоставляющее свои объекты для получения команд от управляющего приложения) и управляющим приложением (клиент Automation или контроллер Automation – это приложение, которое воздействует на объекты Automation и посылает команды серверу Automation).
Некоторые приложения Microsoft Office могут быть только серверами Automation, другие могут выступать и в роли клиентов. Степень поддержки приложениями MS Office Automation показана в табл. 6.
Технически объект в программировании объединяет в себе данные с функциями, использующими эти данные, т.е. в объекте данные объединяются с механизмами доступа к ним. Microsoft расширило понятие объекта до понятия «программируемого объекта». Поведение таких объектов изменяется с помощью Automation. Это позволяет конструировать приложения, управляющие другими объектами-приложениями.
COM определяет интерфейс, позволяющий объектам, написанным разными разработчиками, на разных языках программирования, работать друг с другом. Общий язык программирования для всех продуктов Microsoft – VBA. Он используется для программного управления объектами Automation.
Спецификация COM определяет, как приложения управляют объектами. Возможны два способа совместного использования объектов: пользователи могут внедрить объекты других приложений в свои файлы (связать их), что позволяет создавать составные документы, которые содержат данные, порожденные разными приложениями; разработчики могут построить приложения, которые делают общедоступными свои объекты, т.е. разработчики могут интегрировать существующие функциональные возможности других продуктов.
OLE (Object Linking and Embedding – связывание и внедрение объектов) как часть спецификации COM, предоставляет пользователям возможность создания составных документов путем сопоставления объекту двух типов данных: собственно данных объекта и данных для его представления. С помощью OLE пользователи могут связывать или внедрять объекты других приложений.
Когда объекты связываются с файлом, они добавляют в него данные для своего представления и указатель на исходный файл объекта. При обновлении исходного файла обновляется и его представление в составном документе. При изменении расположения исходного файла относительно составного документа связи разрушаются.
При внедрении объектов в файл в него вносятся и данные о представлении объекта, и данные, необходимые для его редактирования внутри составного документа. Таким образом, все данные, созданные разными приложениями, содержатся в одном документе (файле). Это приводит к «раздуванию» файла составного документа.
Спецификация COM включает в себя часть, называемую Automation, которая позволяет выполнять разработчикам следующие действия:
управлять с помощью программного кода объектами, созданными другими приложениями;
создавать и использовать другие пользовательские объекты, поддерживающие спецификацию COM;
управлять с помощью программного кода связыванием и внедрением объектов.
Приложения, которые управляют доступными объектами других приложений, называются контроллерами Automation (или клиентами Automation), а приложения, которые предоставляют такие объекты в качестве «строительных блоков», – серверами Automation.
Для создания пользовательских объектов используются языки программирования (например, С/С++), а для использования этих объектов, предоставляемых прикладными программами в распоряжение других программ, можно воспользоваться любым языком программирования, обеспечивающим поддержку контроллеров Automation. При проектировании интегрированного приложения можно выбрать одну из трех моделей:
Модель центрального приложения – одно из приложений Office управляет остальными. Разработчики пишут код только для управляющего приложения.
Модель исполняемого файла – все компоненты приложений Office управляются из самостоятельного EXE-файла. Кроме его программирования, разработчики могут писать код и для приложений подключаемых компонентов. «Главное» приложение может быть написано на любом языке программирования (например, Visual Basic).
Модель распределения ролей – каждое приложение Office и исполняемый EXE-файл разработчиков выполняют свою часть работы, код исполняется внутри «родного» приложения. При необходимости приложение само активизирует нужный компонент.
