- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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.5. Графические объекты
Объект Shape представляет любой графический объект, размещенный в верхнем слое рабочего листа или диаграммы. Все объекты Shape рабочего листа представлены семейством Shapes, которое может содержать такие разные графические объекты, как растровые изображения и другие виды рисунков, прямоугольники, линии, объекты WordArt и даже элементы управления. За исключением элементов управления пользователь может создавать все объекты Shape, используя Панель рисования.
Каждый тип объекта Shape имеет свой собственный уникальный набор свойств и методов, но все объекты имеют и набор общих свойств и методов. Этот набор, используемый всеми объектами, представлен ниже.
Свойства объекта Shape:
Left, Top, Width, Height – определяют положение и размер фигуры на рабочем листе или диаграмме;
Name – текстовая строка, используемая для идентификации объекта (может использоваться в качестве индекса в семействе); это свойство можно задать «вручную», вписав значение в поле «Имя» строки формул Excel;
Type – константа, идентифицирующая тип объекта (например, msoLine, msoPicture и т.п.);
Fill – возвращает объект FillFormat, содержащий свойства для задания цвета, типа штриховки и текстуры объекта;
Line – возвращает объект LineFormat, содержащий свойства для настройки цвета, толщины и типа граничных линий объекта;
Shadow – возвращает объект ShadowFormat, содержащий свойства для настройки тени объекта;
TextFrame – возвращает объект, содержащий подобъекты для задания и форматирования текста, находящегося в объекте Shape;
Visible – определяет, будет и объект виден пользователю;
OnAction – служит ля запоминания имени подпрограммы VBA, которая будет запущена, если щелкнуть на объекте мышью.
Методы объекта Shape:
Copy – копирует объект в буфер обмена (Clipboard);
Cut – копирует объект в буфер обмена (Clipboard) и удаляет его с рабочего листа или диаграммы;
Flip – располагает объект горизонтально или вертикально;
Delete – удаляет объект;
IncrementLeft – сдвигает объект по горизонтали;
IncrementTop – сдвигает объект по вертикали;
IncrementRotation – поворачивает объект.
Методы семейства Shapes:
AddShape – добавляет объект в семейство;
AddPicture – добавляет в семейство объект типа рисунка;
AddLabel – добавляет в семейство объект типа надписи.
Объект ShapeRange представляет произвольную группу фигур (такая группа получается при множественном выделении), но включенные в него объекты могут быть не выделены, таким образом, объект ведет себя как семейство. Этот объект можно создать с помощью семейства Shapes, вызвав метод Range и передав ему в качестве параметра массив имен объектов Shape. Созданным семейством можно манипулировать как одним объектом. Все объекты группы можно обработать в цикле For Each.
8.2.6. Элементы управления и обработка событий
Кроме свойств и методов элементы управления имеют предопределенный набор «событий». Событие – это действие со стороны пользователя (щелчок мышью, например) или системы (событие таймера и т.п.). Процедура обработки события – это подпрограмма, реализующая реакцию на это действие. Таким образом, обработку события можно реализовать, написав процедуру VBA.
Элементы управления могут находиться в диалоговом окне. Их можно размещать и на рабочем листе.
Объекты, представляющие элементы управления, используются всеми приложениями MS Office. Назначение объектов, представляющих элементы управления, основные их свойства и связанные с ними события рассматривались выше, при обсуждении интерфейса пользователя. Там же было показано, как можно создать диалоговые окна пользователя и получить доступ к стандартным диалоговым окнам.
Элементы управления можно разместить прямо на рабочих листах Excel. Для этого используются панели инструментов «Элементы управления» и «Формы» (рис. 12).
Объекты, доступные через панель «Элементы управления» – это элементы ActiveX, имеющие несколько событий, обработку которых можно организовать через VBA; эти элементы можно использовать на рабочих листах и пользовательских формах. Элементы управления панели «Формы» – это стандартные элементы управления рабочего листа Excel; они имеют фактически только одно событие (Click), на которое может быть установлена реакция, если связать подпрограмму со свойством OnActive; Эти элементы можно использовать на листах и диаграммах.
Для размещения элемента управления на рабочем листе его нужно выбрать на панели щелчком мыши (курсор мыши примет форму значка ‘+’) и «нарисовать» его с помощью мыши, как обычный графический объект.
Если элемент выбран с панели «Элементы управления», то все его свойства можно просмотреть и изменить, выполнив команду Свойства в контекстном меню или с помощью кнопки на панели. Для разработки кода процедур обработки событий, связанных с элементом управления, следует выполнить команду Исходный текст в контекстном меню объекта или щелчком по соответствующей кнопке на панели. При этом раскроется окно редактора VBA, в котором можно выбрать из списка имя обрабатываемого события для данного объекта. При выборе события редактор автоматически будет создавать «заготовку» для процедуры обработки события, содержащую заголовок процедуры и завершающую ее инструкцию. После написания кода следует перейти снова в Excel.
При
размещении элемента управления и
определении его свойств в Excel
включен режим конструктора (на панели
«нажата» кнопка
).
Для запуска процедур, связанных с
событиями, определенными для элемента
управления, следует выйти из режима
конструктора, щелкнув по кнопке Режим
конструктора на панели. После этого
вставленный элемент управления начнет
«работать», будут обрабатываться
связанные с ним события.
Для изменения свойств созданных элементов управления нужно снова войти в режим конструктора.
Если элемент выбран на панели «Формы», его свойства также доступны через кнопку Свойства элемента управления на панели или команды Изменить текст и Формат объекта в контекстном меню. Установить процедуру обработки события можно с помощью команды Назначить макрос в контекстном меню или с помощью кнопки Текст программы на панели после выделения объекта (для выделения можно перейти в режим выбора объектов с помощью кнопки на панели рисования, вернуться в рабочий режим можно «отжав» эту кнопку).
Элементы управления, размещенные на рабочем листе, можно связать с конкретными ячейками или диапазонами ячеек рабочего листа. Таким образом можно создать удобную пользовательскую форму для ввода и обработки информации.
Основой для создания форм Excel служит объект Worksheet, т.е. форма строится на основе рабочего листа (в отличие от диалоговых окон, которые строятся на основе пользовательских форм, т.е. объекта UserForm). Форма Excel является особым образом отформатированным рабочим листом. Поэтому чаще всего при создании формы используется объект Range и его подобъекты, а также объект Window.
Свойства объектов Workbook и Worksheet рассматривались выше. Далее рассматриваются события, связанные с этими объектами.
Процедуры обработки событий объекта Worksheet находятся в модуле кода каждой рабочей книги. Этот объект поддерживает следующие события:
Activate – происходит при активизации листа;
BeforeDoubleClick – происходит после двойного щелчка мышью на листе, но перед реакцией Excel по умолчанию (эту реакцию можно отменить, установив аргумент Cancel в True); аргумент Target указывает ячейку, на которой был произведен щелчок;
BeforeRightClick – происходит после щелчка правой кнопкой мыши на листе, но перед реакцией Excel по умолчанию (эту реакцию можно отменить, установив аргумент Cancel в True); аргумент Target указывает ячейку, на которой был произведен щелчок;
Calculate – происходит после пересчета листа;
Change – происходит при изменении данных на листе; аргумент Target указывает ячейку, в которой было произведено изменение;
Deactivate – происходит, когда лист перестает быть активным;
SelectionChange – происходит при изменении вычисления.
Процедуры обработки событий объекта Workbook находятся в модуле кода “This Workbook”. Этот объект поддерживает следующие события:
Activate – происходит при активизации рабочей книги;
AddinInstall – происходит при установке рабочей книги как надстройки;
AddinUninstall – происходит при отмене установки рабочей книги как надстройки;
BeforeClose – происходит перед закрытием рабочей книги (для отмены закрытия можно установить аргумент Cancel в True);
BeforePrint – происходит перед печатью или отображением предварительного просмотра книги (для отмены печати можно установить аргумент Cancel в True);
BeforeSave – происходит перед сохранением рабочей книги (для отмены сохранения можно установить аргумент Cancel в True);
Deactivate – происходит, когда рабочая книга перестает быть активной;
NewSheet – происходит при вставке нового листа в рабочую книгу (аргумент Sh является объектом, указывающим на новый лист);
Open – происходит при открытии рабочей книги (используется вместо старого макроса Auto_open из предыдущих версий Excel);
WindowActivate – происходит при активизации окна рабочей книги;
WindowDeactivate – происходит при деактивизации окна рабочей книги;
WindowResize – происходит при изменении размера окна рабочей книги (разворачивание, сворачивание, восстановление или изменение размеров вручную).
Порядок создания процедур обработки событий для различных объектов Excel (приложений, рабочих книг и листов) рассматривался выше.
