- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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 Постановка задачи
- •Разработка документа
- •Разработка экранной формы
- •Список литературы
9.5.Использование элементов управления в документах Word
Как уже было сказано, элементы управления используются всеми приложениями Microsoft Office. Они могут включаться в пользовательские формы для создания диалоговых окон, элементы управления можно размещать на рабочих листах Excel, элементы управления можно размещать на страницах документа Word.
Панели управления «Формы» и «Элементы управления» в Word выполняют те же функции, что и в Excel, но вид панели «Формы», набор ее инструментов является специфическим для Word (на ней присутствуют кнопки для создания таблиц и рамок).
Средства, предоставляемые панелью «Формы», позволяют включать в документ текстовые поля, поля со списками и флажки. Для каждого такого элемента создается поле соответствующего типа. Однако для разработки приложений лучше использовать элементы управления ActiveX, доступные через панель «Элементы управления». Порядок работы с этими элементами аналогичен способу, описанному для Excel. Программные средства управления элементами также описаны выше. С каждым событием, связанным с элементами управления, можно связать код на VBA, таким образом, значения, которые могут быть введены, выбраны или установлены с помощью этих элементов, можно запомнить в переменных документа и использовать для вычислений, необходимых для создания документа.
Элементы управления, предварительно помещенные в буфер, могут быть «внедрены» в текст с помощью команды Специальная вставка… меню Правка. Объекты, вставленные с помощью этой команды в текст (в диалоговом окне команды нужно выбрать соответствующий тип объекта, флажок «Поверх текста» должен быть сброшен), превращаются в «символы» в тексте документа, для них можно установить параметры шрифта (например, смещение относительно базовой линии строки).
Элементы управления можно сгруппировать на странице документа в режиме конструктора, соединив их, зафиксировав взаимное расположение элементов, создав с их помощью «форму».
Элементы управления удобно использовать, в частности, для создания шаблонов анкет и т.п. Ниже рассматривается пример такого приложения.
9.6.Создание шаблонов документов на основе таблиц
При создании шаблона документа часто бывает необходимо выполнить его разметку, определив точное положение каждого поля в документе, формат представления данных в нем. Удобным способом разметки документов являются таблицы. Для каждого поля можно отвести отдельную ячейку таблицы, причем обрамление ячеек при необходимости можно снять. Сетка таблицы позволяет точно установить нужные размеры полей с помощью команды Высота и ширина ячейки… меню Таблица.
Ниже приведен пример шаблона документа, для заполнения которого используются элементы управления (рис. 31).
Для ввода фамилии, имени и отчества используются текстовые поля (объекты TextBox).
При открытии анкеты в этих полях отображается текст приглашения «Введите…». При перемещении «фокуса» на один из этих элементов весь содержащийся в поле текст выделяется. Для реализации такого выделения должна быть написана процедура обработки события GotFocus, код которой приведен ниже:
Private Sub Surname_GotFocus()
Surname.SelStart = 0
Surname.SelLength = Len(Surname.Text)
End Sub
Код процедуры принадлежит элементу управления Surname (поле для ввода фамилии). Сделанное выделение позволит автоматически стереть весь ранее введенный текст при вводе любого символа, т.е. текст приглашения не нужно стирать вручную.
При переносе фокуса на любое другое поле можно осуществить проверку, не осталось ли поле пустым. Это можно сделать с помощью следующего обработчика события:
Private Sub Surname_LostFocus()
If Surname.Text = "" Then
Surname.Text = "Введите фамилию"
End If
End Sub
Год рождения – число, которое вводится в текстовое поле. Если требуется ограничить возраст принимаемых на работу, для этого значения можно установить ограничения (в данном примере год рождения должен попасть в диапазон от 1950 до 1975). Кроме того, следует предотвратить возможность ошибки при вводе числа (например, нельзя допустить ввод букв). Для того чтобы можно было не вводить число с клавиатуры, а выбрать значение с помощью мыши, рядом с данным полем размещен элемент управления «Счетчик» (SpinButton). В свойствах этого элемента заданы максимальное и минимальное допустимые значения. Значения, соответствующие двум этим элементам, должны быть равны. Ниже приведены обработчики события для текстового поля ГодРождения, в которое вводится год рождения, и соответствующего счетчика AgeCount, показывающие, как можно контролировать изменение значений элементов управления и установить соответствие между значениями двух элементов:
Private Sub ГодРождения_Error(ByVal Number As Integer, _ ByVal Description As MSForms.ReturnString, _ ByVal SCode As Long, ByVal Source As String, _ ByVal HelpFile As String, ByVal HelpContext As Long, _ ByVal CancelDisplay As MSForms.ReturnBoolean)
MsgBox "Год рождения должен быть числом от 1950 до 1975"
‘ В случае ошибки выбирается значение из счетчика:
ГодРождения.Value = Trim(Str(AgeCount.Value))
End Sub
Private Sub ГодРождения_LostFocus()
Dim A As Integer
A = Val(ГодРождения.Value)
If (A < 1950) Or (A > 1975) Then
‘ Введено недопустимое значение:
MsgBox "Год рождения должен быть между 1950 и 1975"
‘ Восстанавливается прежнее значение:
ГодРождения.Value = Trim(Str(AgeCount.Value))
Else ‘ Значение счетчика устанавливается равным введенному числу:
AgeCount.Value = A
End If
End Sub
Private Sub AgeCount_Change() ‘ Каждое изменение счетчика ведет к изменению поля:
ГодРождения.Value = Trim(Str(AgeCount.Value))
End Sub
Обработчик события через параметры получает дополнительную информацию, которая позволяет более точно определить причину ошибки и организовать ее обработку.
Аналогично можно организовать ввод и контроль дня месяца (числа в дате рождения).
Для ввода месяца в дате рождения используется элемент управления «Поле со списком» (ComboBox) МесяцРождения. Этот элемент допускает как ввод значения с клавиатуры, так и выбор значения из списка допустимых значений. Включить нужные значения в список можно при открытии документа. Для этого нужно написать обработчик соответствующего события:
Private Sub Document_Open()
With МесяцРождения
Obj = .AddItem("декабрь", 0)
Obj = .AddItem("ноябрь", 0)
Obj = .AddItem("октябрь", 0)
Obj = .AddItem("сентябрь", 0) ...
End With
With Образование
Obj = .AddItem("начальное", 0)
Obj = .AddItem("среднее", 0)
...
End With
...
End Sub
В этой же процедуре можно установить значения всех свойств элементов управления, если они не были установлены при создании объектов.
Аналогично организован выбор значений из списка в поле «Образование» и в полях, в которых указывается степень владения иностранными языками.
Введенную информацию можно сохранить, как документ Word, вывести на печать. Кроме того, информацию, введенную в поля формы, можно сохранить в базе данных для дальнейшего использования. Эти действия можно реализовать в обработчике события закрытия документа.
Если разработанная форма сохраняется в качестве шаблона, на основе которого будут созданы новые документы, то команды инициализации (например, включения элементов в список) должны быть добавлены и в обработчик события создания нового документа.
Для создания законченных приложений необходимо создать свое меню и панели инструментов. Их инициализацию также можно выполнить в обработчике события открытия или создания документа. Ввод более сложно структурированной информации лучше организовать не в тексте документа, а с помощью пользовательских диалоговых окон, которые предоставляют более мощные возможности, в частности, работу с несколькими страницами или вкладками и т.п.
Ввод информации в электронном виде ускоряет и облегчает ее обработку, уменьшает возможность внесения ошибок (принцип «выбирать, а не набирать» гарантирует, что значения будут соответствовать правилам).
Кроме того, электронные формы документов позволяют организовать ввод информации «на расстоянии», по сети. Все продукты Microsoft Office включают средства работы в Internet.
