- •Л.Н. Лядова, н.В. Фролова, в.В. Ланин, е.Б. Замятина, м.А. Плаксин, б.А. Ермолаев
- •Часть 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.7.1. Использование автофильтра
Автофильтр – это наиболее простой способ отбора данных, размещенных в «базе данных». Для вызова автофильтра достаточно установить рамку выделения на ячейку в строке заголовков и выполнить команду ФильтрАвтофильтр… в меню Данные. Программным способом автофильтр можно активизировать командой
Selection.AutoFilter
После включения автофильтра пользователь может задать условия отбора информации для каждого столбца, щелкнув по кнопке раскрытия списка, расположенной рядом с назнанием столбца в строке заголовков таблицы (рис. 29).
Приведенный ниже фрагмент кода позволяет выбрать из всего списка информацию о сотрудниках-мужчинах:
Selection.AutoFilter Field:=2, Criteria1:="м"
(для второго поля, имеющего в таблице заголовок «Пол», устанавливается условие (критерий) отбора: выбираются записи, содержащие в этом поле значение "м").
Отбор данных можно осуществить сразу по нескольким полям. Например, чтобы получить информацию о мужчинах пенсионного возраста следует к сформированному ранее условию добавить еще одно (задать критерий для поля «Год рождения»):
Selection.AutoFilter Field:=2, Criteria1:="м"
Selection.AutoFilter Field:=3, Criteria1:="<=1941"
(В таблице после выполнения этого кода останутся всего две строки, содержащие информацию о сотрудниках Сидорове и Яковлеве.)
Отменить условие отбора данных по значению конкретного поля можно, выполнив код
Selection.AutoFilter Field:=2
(при «ручной» отмене в списке выбирается строка «Все»).
Пользователь может сформировать более сложное условие отбора, используя логические операции «И» и «ИЛИ». Например, вывести информацию о сотрудниках, чьи фамилии начинаются на буквы «И» или «Я», можно с помощью кода
Selection.AutoFilter Field:=1, Criteria1:="=И*", _
Operator:=xlOr, Criteria2:="=Я*"
Но возможности автофильтра ограничены. Рассмотрим, например, следующую задачу: нужно вывести информацию обо всех сотрудниках фирмы пенсионного возраста. Поблема в данном случае состоит в том, что у мужчин и женщин пенсионный возраст различен.
Такую задачу можно решить лишь с помощью расширенного фильтра.
8.7.2. Работа с расширенным фильтром
Для отбора данных с помощью расширенного фильтра необходимо кроме основной таблицы (исходного диапазона, содержащего данные для отбора) сформировать диапазон условий, который представляет собой таблицу, в которой строка заголовков содержит те же заголовки, что и исходный диапазон (некоторые заголовки могут быть пропущены, а другие могут повторяться), причем написание заголовков должно в точности совпадать в обеих таблицах, а вместо данных в ячейках этой таблицы должны содержаться условия отбора информации по соответствующим полям.
Условия, сформированные в ячейках одной строки диапазона условий, объединяются при выполнении команды расширенного фильтра логической операцией «И», а условия, размещенные в различных строках – операцией «ИЛИ».
Для поиска данных о сотрудниках пенсионного возраста необходимо сформировать следующие условия в диапазоне условий:
ФИО |
Пол |
Год рождения |
Должность |
|
м |
<=1941 |
|
|
ж |
<=1946 |
|
Причем столбик «ФИО» и «Должность» можно было бы и опустить, так как значения, находящиеся в этих столбиках в исходном диапазоне, не влияют на условия отбора.
Формировать диапазон условий лучше выше или ниже основной таблицы, но не рядом, так как при срабатывании фильтра строки таблицы, не удовлетворяющие критериям отбора скрываются, а значит, могут оказаться скрытыми и некоторые условия.
Сформировав диапазон условий и установив рамку выделения на ячейку в исходном диапазоне, можно выполнить команду ФильтрРасширенный фильтр… в меню данные. В диалоговом окне команды задаются ее параметры: исходный диапазон и диапазон условий, где должны размещаться результаты отбора (нужно ли их копировать в другое место и куда именно), отбирать ли только уникальные записи (строки) или допускается повторение.
Вызвать расширенный фильтр для приведенного примера можно с помощью команды
Range("A1:D6").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("A10:D12"), _
CopyToRange:=Range("A15"), Unique:=False
(диапазон условий размещается ниже основной таблицы, начиная со строки с номером 10, а результаты копируются на тот же лист, располагаясь, начиная со строки с номером 15).
В результате выполнения команды в диапазоне A15:D18 автоматически формаруется таблица
ФИО |
Пол |
Год рождения |
Должность |
Сидоров |
м |
1940 |
Менеджер |
Кукушкина |
ж |
1942 |
Референт |
Яковлев |
м |
1939 |
Директор |
содержащая записи, удовлетворяющие заданным критериям.
Если бы требовалось выбрать сотрудников, дата рождения которых попадает в заданный диапазон (например с 1940 по 1960 годы), то при формировании диапазона условий пришлось бы повторить столбец «Год рождения», так как два условия, налагаемых на значения поля должны соединяться логической операцией «И»:
Год рождения |
Год рождения |
>=1940 |
<=1960 |
Расширенный фильтр позволяет выполнить отбор информации по сколь угодно сложным критериям.
