- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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 Постановка задачи
- •Разработка документа
- •Разработка экранной формы
- •Список литературы
8.2.Обзор основных объектов Excel
Ниже рассматриваются только основные, наиболее часто используемые объекты Excel. Более полную информацию можно получить в справочной системе. Для поиска наименований нужных объектов, их свойств и методов можно воспользоваться также макрогенератором, выполнив нужные действия «вручную» и записав их последовательность в макрос.
8.2.1. Объект Application
Объект Application является главным в иерархии. Его можно представить себе как среду, в которой выполняется приложение.
Чаще всего используются следующие свойства объекта:
ActiveWorkbook, ActiveSheet, ActiveCell – ссылки на активные объекты приложения;
Caption – надпись, отображаемая в заголовке окна Excel (тип – String; доступно для чтения и записи);
Cursor – установка указателя мыши (xlNormal, xlDefault – обычный указатель (по умолчанию), установленный в Панели управления Windows, xlWait – песочные часы, xlNorthWestArrow – стрелка вверх и влево, xlBeam – I-курсор, как при редактировании текста);
DisplayAlerts – управляет выводом на экран встроенных предупреждений Excel (тип – Boolean; доступно для чтения и записи);
DisplayStatusBar – управляет отображением строки состояния (тип – Boolean; доступно для чтения и записи);
DisplayFormulaBar – управляет отображением строки формул (тип – Boolean; доступно для чтения и записи);
DisplayScrollBars – управляет отображением полос прокрутки (тип – Boolean; доступно для чтения и записи);
EnableCancelKey – обычно прерывание выполнения макроса в приложении осуществляется с помощью комбинации клавиш Ctrl+Break; в том случае, когда требуется запретить прерывание выполнения макроса, данному свойству нужно присвоить значение константы xlDisabled (данная установка позволяет выполнить макрос как единую транзакцию, но этим значением следует пользоваться очень осторожно – нужно убедиться, что макрос не может зациклиться), а в том случае, когда после прерывания макроса следует передать управление на процедуру обработки ошибок, нужно установить для данного свойства значение xlErrorHandler (в этом случае в макрос должна быть включена последовательность операторов для обработки ошибок, которая указывается с помощью инструкции On Error GoTo, а вырабатываемый в данном случае код ошибки равен 18);
OperatingSystem – строка текста с информацией об операционной системе (только для чтения);
Path – путь к каталогу (папке), в котором установлен Excel (тип – String; только чтение);
ScreenUpdating – управляет обновлением экрана при выполнении подпрограммы (тип Boolean; доступно для чтения и записи; устанавливается только на время выполнения процедуры, в которой сделана установка);
StatusBar – текст строки состояния;
ThisWorkBook – ссылка на объект WorkBook – рабочую книгу, в которой содержится выполняемый макрос;
UserName – имя текущего пользователя (по умолчанию равно значению поля «Имя пользователя» на вкладке «Общие» диалогового окна, открываемого командой Параметры из меню Сервис);
Version – номер версии Excel (только для чтения);
WindowState – состояние окна приложения (может принимать три значения: xlNormal – нормальное, xlMaximized – развернуто на весь экран, xlMinimized – свернуто; доступно для чтения и записи);
Основные методы данного объекта:
Calculate – вызывает перевычисление всех формул на всех рабочих листах во всех открытых рабочих книгах;
GoTo – выбор требуемого диапазона или процедуры VBA в любой рабочей книге;
InputBox – используется для получения информации от пользователя;
OnKey, OnRepeat, OnTime, OnUndo – методы, вызываемые обычно в процедуре Auto_Open модуля «AutoExec», эти методы позволяют задать реакцию приложения на определенные события:
OnKey – задает процедуру, которая должна быть выполнена при нажатии определенной клавиши или комбинации клавиш (коды клавиш и имя процедуры передаются при вызове метода как строковые аргументы);
OnRepeat – задает процедуру, которая должна быть вызвана при выполнении команды Повторить действие из меню Правка (полное название команды и имя процедуры передаются при вызове метода как строковые аргументы);
OnUndo – задает процедуру, которая должна быть вызвана при выполнении команды Отменить действие из меню Правка (полное название команды и имя процедуры передаются при вызове метода как строковые аргументы);
OnTime – позволяет назначить выполнение процедуры на заданное время;
Quit – закрывает Excel;
Run – запускает макрос или подпрограмму.
В программах на VBA можно обрабатывать события объекта Application:
NewWorkbook – создание новой рабочей книги;
WorkbookActivate – активизация любой рабочей книги;
WorkbookAddinInstall – установка рабочей книги в качестве дополнительной надстройки;
WorkbookAddinUninstall – отмена установки рабочей книги в качестве дополнительной надстройки;
WorkbookBeforeClose – возникает непосредственно перед закрытием рабочей книги;
WorkbookBeforePrint – возникает непосредственно перед печатью рабочей книги;
WorkbookBeforeSave – возникает непосредственно перед сохранением рабочей книги;
WorkbookDeactivate – возникает, когда открытая рабочая книга теряет фокус;
WorkbookNewSheet – возникает при добавлении нового рабочего листа;
WorkbookOpen – открытие рабочей книги.
Чтобы обработать событие объекта Application, необходимо создать новый модуль класса и объявить в нем переменную, используя ключевое слово WithEvents:
Public WithEvents ПеременнаяПриложения As Application
Данная инструкция определяет, что описанная в ней переменная используется для обработки событий.
Затем требуется связать описанный в модуле класса объект с элементом Application. Это можно сделать в любом модуле, записав в нем следующий код:
Dim ПеременнаяСобытия As New ИмяМодуляКласса Sub InitializeAppEvents() Set ПеременнаяСобытия.ПеременнаяПриложения = Application End Sub
После выполнения данной процедуры объект, описанный в модуле класса, указывает на объект Excel Application, что позволяет использовать для него процедуры обработки событий, описанные в модуле класса, при возникновении этих событий.
Если необходимо включить или отключить обработку событий, то следует изменить в программе свойство EnableEvents объекта Application. Процедуры обработки событий доступны, если данное свойство равно True.
Общий синтаксис заголовка процедуры обработки события можно представить в следующем виде:
Private Sub ПеременнаяПриложения_Событие (СписокПараметров)
Параметры, передаваемые процедурам обработки событий, позволяют уточнить условия возникновения и обработки событий (например, могут задать ссылку на рабочую книгу, с которой связано событие).
Например, для обработки событий создаем модуль класса с именем «EventClassModule». В этом модуле класса можно сделать следующие описания:
Public WithEvents AppObj As Application
Private Sub AppObj_NewWorkbook(ByVal Wb _
As Excel.Workbook)
x = MsgBox("Создаем новую книгу " & Wb.Name, _
vbOKOnly, "Excel")
End Sub
Это означает, что для объекта-приложения, с которым будет связана переменная AppObj, определена процедура обработки события NewWorkbook, возникающего при создании новой книги. Присваиваемое книге имя выводится на экран с помощью функции MsgBox.
Если в списке объектов в окне модуля класса выбрать строку «Class», то в списке процедур можно выбрать имена процедур «Initialize» и «Terminate». Редактор VBA автоматически вставит в модуль «заготовки» для этих процедур, если они еще не были записаны. Данные процедуры используются для инициализации (например, присваивания значений общим переменным) и уничтожения экземпляра класса.
Для создания процедуры обработки события следует выбрать в списке «Объект» имя переменной, описанной в модуле с ключевым словом WithEvents, а в списке «Процедура» – нужное событие. Редактор VBA автоматически сгенерирует «заготовку» для процедуры обработки выбранного события (ее заголовок со стандартным именем и списком параметров и инструкцию, завершающую процедуру).
После создания модуля класса для обработчиков событий приложения можно в любом модуле «подключиться» к этим процедурам. Для этого нужно описать переменную
Dim EvObj As New EventClassModule
и записать код, который установит ссылку на приложение, для которого должны обрабатываться события:
Sub InitAppEvents() Set EvObj.AppObj = Application End Sub
Более полную информацию о свойствах объекта Application, методах и событиях, связанных с этим объектом можно посмотреть в справочной системе, открыв окно просмотра объектов.
Работая с приложениями Excel, в среде Excel пользователь имеет дело с рабочими книгами.
