
- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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.3.Переменные документа
В каждом документе определен набор переменных, которые можно добавлять, изменять и использовать с помощью VBA. Эти переменные, в частности, могут использоваться при работе с полями. Следующий пример показывает, как можно добавить переменную документа в активный документ, изменить ее значение и отобразить это значение на экране:
Sub AddDocVar()
With ActiveDocument
.Variables.Add Name:="DocVar", Value:="1"
MsgBox .Variables("DocVar").Value
.Variables("DocVar").Value = _ .Variables("DocVar").Value + 10
MsgBox .Variables("DocVar").Value End With
End Sub
Дополнительную информацию об использовании переменных документа можно получить в справочной системе в окне просмотра объектов.
Переменные документа могут использоваться при включении в текст документа полей, значения которых могут вычисляться. Код поля DocVariable дает возможность разместить в тексте значение заданной переменной в различных форматах. Например:
{ DOCVARIABLE "DocVar" \* DOLLARTEXT }
включает в текст значение переменной DocVar, причем результат (если значение переменной равно 91) будет отображаться в виде
девяносто один р. 00 коп.
а поле с кодом
{ DOCVARIABLE "DocVar" \* ARABIC }
покажет просто значение 91 в числовом формате, т.е. строку “91”.
9.4.Использование формул в документах Word
В документы Word можно вставлять поля, значения которых вычисляются по заданным кодом поля формулам. В этом случае код поля формируется по следующему правилу:
{ = Формула [\# "Числовой формат" ] }
Для вставки поля с математической формулой в таблицу или основной текст документа можно использовать команду Формула… (меню Таблица) или команду Поле… (меню Вставка). В открывшихся диалоговых окнах можно сформировать параметры для кода поля. Причем команда Формула предоставляет средства более высокого уровня: доступные для использования в формуле функции, закладки и форматы представления чисел можно выбрать из списков в диалоговом окне команды; а при вставке поля нужно набирать формулу вручную.
В представленном выше синтаксическом правиле записи кода поля, содержащего формулу, используются следующие обозначения:
Формула представляет собой выражение, операндами в котором могут быть числа или закладки, содержащие числа, поля, значениями которых являются числа, ссылки на ячейки таблицы и вызовы функций.
Для определения закладки нужно выделить числовое значение или поле, которое будет поставлено в соответствие закладке, и выполнить команду Закладка… меню Вставка. В открывшемся диалоговом окне нужно ввести имя закладки и щелкнуть кнопку Добавить. Закладку можно определить для любого выделенного фрагмента текста, в том числе и для таблицы. Существует и программный способ создания закладки – объекта семейства Bookmarks – с помощью метода Add. Введенные закладки можно использовать не только для поиска соответствующих фрагментов текста, но и для ссылок на эти объекты в формулах. Например, в тексте определены две закладки: «Число» и «Переменная». Первой закладке соответствует строка в тексте, содержащая число, а второй – поле со ссылкой на переменную документа. Тогда следующая формула позволяет сложить значение числа и переменной:
{ = Переменная+Число }
В выражении могут использоваться следующие операции: сложение (+), вычитание (–), умножение (*), деление (/), вычисление процентов (%), степени и корни (^), сравнения на равенство (=), меньше чем (<), меньше либо равно (<=), больше чем (>), больше либо равно (>=), не равно (<>).
В формулах могут использоваться ссылки на следующие функции: ABS(x) – абсолютное значение x, AND(x; y) – логическая операция «И» для операндов x и y, являющихся логическими выражениями, AVERAGE( ) – среднее значений операндов, включенных в список, COUNT( ) – число элементов в списке, DEFINED(x) – определение вычислимости выражения, заданного в качестве операнда (результат равен 1 (истина), если выражение x допустимо, или 0 (ложь), если оно не может быть вычислено), FALSE – 0 (нуль), IF(x; y; z) – условное выражение (возвращает значение y, если условие x истинно, или z, если оно ложно, y и z могут быть числами или строками), INT(x) – целая часть числа или значения выражения x, MIN( ) – наименьшее значение в списке, MAX( ) – наибольшее значение в списке, MOD(x; y) – остаток от деления x на y, NOT(x) – логическое отрицание, OR(x; y) – логическое «ИЛИ» для операндов x и y, являющихся логическими выражениями, PRODUCT( ) – произведение значений, включенных в список, ROUND(x; y) – значение x, округленное до указанного десятичного разряда (y), SIGN(x) – знак числа (1, если x > 0, или –1, если x < 0), SUM( ) – сумма значений, включенных в список, TRUE – 1.
Операндами в выражении, заданном формулой, будут результаты, возвращаемые этими функциями. Для функций с пустыми скобками допустимо любое число аргументов, разделенных точками с запятыми (‘;’). Аргументы могут быть числами, формулами или именами закладок. Ссылки на ячейки таблицы допустимы в качестве аргументов следующих функций: AVERAGE(), COUNT(), MAX(), MIN(), PRODUCT() и SUM().
В формулах, вставляемых в ячейки таблицы, можно ссылаться на другие ячейки. Для указания ячейки задаются ее координаты (т.е. название столбца и номер строки). Столбцы обозначаются латинскими буквами (символами ‘A’, ‘B’, ‘C’ и т.д.), а строки нумеруются с 1. При ссылках на ячейки в формулах в качестве разделителя между ссылками на отдельные ячейки используется запятая. Двоеточием разделяются ссылки на первую и последнюю ячейки в диапазонах.
Для организации ссылки на таблицу извне необходимо выделить эту таблицу и создать соответствующую ей закладку. Тогда ссылка на ячейки этой таблицы в формуле будет состоять из имени закладки и ссылки на ячейку или диапазон ячеек, следующей за закладкой через пробел. Например, если в документе есть таблица, состоящая из трех строк и трех столбцов, которая помечена закладкой «Таблица», то для суммирования всех записанных в ее ячейках значений нужно вставить поле с кодом
{ =SUM(Таблица A1:C3) }
Ссылки на ячейки в Word, в отличие от ссылок в Microsoft Excel, всегда являются абсолютными ссылками.
Пример использования таблицы, полей и формул для создания шаблона приведен ниже.
Полученные при вычислении по формуле результаты можно отформатировать, указав нужный формат, т.е. «шаблон» для отображения значений.
Числовой формат указывает способ отображения полученного результата: число знаков в дробной части, способ отображения чисел с различными знаками и т.п.
Числовые форматы, используемые в формулах, сходны с форматами, которые задаются в Excel. В таком шаблоне можно задать формат представления положительных чисел, отрицательных чисел, нулевых значений. Таким образом, общий вид числового формата, используемого в формулах следующий:
“Положительные; Отрицательные; Нулевые”
Числовой формат в формуле может быть опущен или может быть задан в «сокращенном» формате, т.е. в виде “Положительные” или “Положительные; Отрицательные”. Кроме того, можно определить текст, который будет добавляться к вычисленному значению при выводе, и номер.
Формат, заданный в виде “Положительные” задает общий «шаблон» для вывода всех значений.
Формат “Положительные; Отрицательные” определяет различные форматы для положительных и отрицательных значений.
Далее описаны элементы числовых форматов, символы, которые могут использоваться в формулах для форматирования результатов вычислений (табл. 5).
Простые числовые форматы, которые не содержат ни пробелов, ни текста необязательно заключать в кавычки, например: { ПродажиЗаМарт \# ##0,00 }. Более сложные числовые форматы, содержащие текст или пробелы, необходимо заключать в кавычки полностью. При вставке поля с помощью команды Поле (меню Вставка) кавычки добавляются к числовому формату автоматически.
Формулы могут содержать другие поля, например, в следующем фрагменте текста поле, содержащее формулу, вычисляет полное число страниц в документе, нумерация страниц которого начинается с 47:
Стр. { PAGE } из { = (47 - 1) + { NUMPAGES } }
результат изображается в виде «Стр. 51 из 92».
Более подробно информацию о работе с полями, таблицами и об использовании формул можно получить в справочной системе.