
- •Предисловие
- •1. Основы программирования в Microsoft Office
- •1.2. Что такое язык VBA
- •1.3. Макрорекордер: быстрое создание макросов
- •1.4. Четыре способа запуска макроса
- •2.1. Общие сведения
- •2.3.1. Как открыть редактор кода и как он устроен
- •2.3.2. Список объектов и список событий
- •2.3.3. Закладки и разделение окна редактирования
- •2.3.4. Как редактор помогает писать код
- •2.4. Работа со справкой
- •3. Синтаксис и программные конструкции VBA
- •3.1. Основы синтаксиса
- •3.2. Операторы
- •3.3. Переменные и типы данных
- •3.4. Константы
- •3.5. Операторы условного и безусловного перехода
- •3.5.2. Оператор Select Case
- •3.5.3. Оператор GoTo
- •3.6. Работа с циклами
- •3.7. Массивы
- •3.8. Процедуры и функции
- •3.8.1. Виды процедур
- •3.8.2. Область видимости процедур
- •3.8.3. Объявление процедур
- •3.8.4. Передача параметров
- •3.8.5. Вызов и завершение работы процедур
- •3.9. Встроенные функции языка VBA
- •3.9.1. Что такое встроенные функции
- •3.9.2. Функции преобразования и проверки типов данных
- •3.9.3. Строковые функции
- •3.9.4. Функции для работы с числовыми значениями
- •3.9.5. Функции для работы с датой и временем
- •3.9.6. Функции для форматирования данных
- •3.9.7. Функции для организации взаимодействия с пользователем
- •3.9.9. Функции для работы с массивами
- •3.9.10. Функции для работы с файловой системой
- •3.9.11. Другие функции VBA
- •4. Работа с объектами и объектные модели
- •4.1. Что такое классы и объекты
- •4.2. Создание и удаление объектов
- •4.3. Методы объекта
- •4.4. Свойства объекта
- •4.6. Просмотр объектов
- •4.7. Объектные модели
- •5. Формы, элементы управления и события
- •5.1. Для чего нужны формы
- •5.2. Создание форм и самые важные свойства и методы форм
- •5.3. Элементы управления
- •5.3.1. Что такое элемент управления
- •5.3.2. Элемент управления Label
- •5.3.3. Элемент управления TextBox
- •5.3.4. Элемент управления ComboBox
- •5.3.5. Элемент управления ListBox
- •5.3.7. Элементы управления OptionButton и Frame
- •5.3.8. Элемент управления CommandButton
- •5.3.9. Элементы управления ScrollBar и SpinButton
- •5.3.10. Элементы управления TabStrip и MultiPage
- •5.3.11. Элемент управления Image
- •5.3.12. Применение дополнительных элементов управления
- •6. Отладка и обработка ошибок в программе
- •6.1. Типы ошибок
- •6.2.1. Тестирование
- •6.2.2. Переход в режим паузы
- •6.2.3. Действия в режиме паузы
- •6.2.4. Окно Immediate
- •6.2.5. Окно Locals
- •6.2.6. Окно Watches
- •6.3. Перехват и обработка ошибок времени выполнения
- •7. Работа с помощником
- •8. Работа с панелями инструментов и меню
- •9.1. Зачем нужно работать с базами данных
- •9.2. Что такое ADO
- •9.3. Объект Connection и коллекция Errors
- •9.4. Подключение к таблице на листе Excel
- •9.5. Объект Recordset и коллекция Fields
- •9.5.1. Открытие Recordset
- •9.5.3. Перемещение по Recordset
- •9.5.4. Коллекция Fields и объекты Field
- •9.5.5. Сортировка и фильтрация данных
- •9.5.6. Изменение записей на источнике при помощи объекта Recordset
- •9.5.7. Прочие свойства и методы объекта Recordset
- •10. Программирование в Word
- •10.1. Зачем программировать в Word
- •10.3. Объект Application
- •10.3.1. Как работать с объектом Application
- •10.3.2. Свойства, методы и события объекта Application
- •10.4. Коллекция Documents и объекты Document
- •10.4.1. Как работать с коллекцией Documents
- •10.4.2. Свойства и методы коллекции Documents
- •10.4.3. Работа с объектом Document, его свойства и методы
- •10.5. Объекты Selection, Range и Bookmark
- •10.5.1. Работа с объектом Selection
- •10.5.2. Свойства и методы объекта Selection
- •10.5.3. Работа с объектом Range, его свойства и методы
- •10.5.4. Объект Bookmark
- •10.6. Другие объекты Word
- •10.6.1. Коллекция AddIns и объекты AddIn
- •10.6.2. Объект AutoCorrect
- •10.6.3. Коллекция Languages и объект Language
- •10.6.4. Объект Options
- •10.6.5. Объекты Find и Replacement
- •10.6.6. Объекты Font и ParagraphFormat
- •10.6.7. Объект PageSetup
- •10.6.8. Объекты Table, Column, Row и Cell
- •10.6.9. Объект System
- •10.6.10. Коллекция Tasks и объект Task
- •10.6.11. Коллекция Windows и объект Window
- •11. Программирование в Excel
- •11.1. Зачем программировать в Excel
- •11.2. Объект Application
- •11.3. Свойства и методы объекта Application
- •11.4. Коллекция Workbooks и объект Workbook, их свойства и методы
- •11.5. Коллекция Sheets и объект Worksheet, их свойства и методы
- •11.6. Объект Range, его свойства и методы
- •11.7. Коллекция QueryTables и объект QueryTable
- •11.9. Работа с диаграммами (объект Chart)
- •11.10. Другие объекты Excel
- •12. Программирование в Access
- •12.1. отличительные особенности создания приложений в Access
- •12.2. Основные этапы создания приложений в Access
- •12.4. Макрокоманды и объект DoCmd
- •12.5. Работа с формами Access из VBA (объект Form)
- •12.6. Свойства, методы и события форм
- •12.7. Работа с отчетами (объект Report)
- •13. Программирование в Outlook
- •13.1. Зачем программировать в Outlook
- •13.2. Некоторые особенности программирования в Outlook
- •13.4. Объект Namespace
- •13.5. Коллекция Folders и объект MAPIFolder
- •13.7. Другие объекты Outlook
- •14. Программирование в PowerPoint
- •15. Программирование в Project
- •15.1. Основы программирования в Project Professional. Объект Application
Какую работу нужно написать?


Предисловие
Несколько лет назад автору — сертифицированному преподавателю Microsoft — поступил заказ: подготовить курс по программированию в Office. Задача была простая: существует группа из нескольких десятков человек, достаточно продвинутых пользователей, которые не имеют никакого опыта программирования. Одни пользователи занимались анализом трафика базовых станций в сети (заказчик был оператором сотовой связи российского масштаба), другие — проектами по развертыванию тех же базовых станций, третьи все это планировали и прогнозировали и т. п. И многие пользователи обращались к IT-подразделению с просьбой автоматизировать выполнение определенных задач, например:
загрузку в Excel информации из базы данных SQL Server, дальнейший анализ (например, выявление тенденций) и представление результатов в стандартном виде;
автоматическое создание сводных таблиц и графиков в Excel;
проход по всем проектам (300—400 единиц) на Project Central (программное средство для корпоративной работы с проектами Microsoft Project) и замена в них каких-то элементов;
создание стандартных документов Word, в которые бы подставлялись данные из базы данных.
И, конечно, список задач этим не ограничивался.
На этом предприятии были очень квалифицированные, но постоянно занятые программисты. Конечно, они отзывались на просьбы пользователей, но фактически намного больше времени уходило на постановку задачи, чем на ее решение. А через некоторое время задача вполне могла слегка измениться (например, нужно было ввести дополнительную ось на графике в Excel или поменять пару строк в шаблоне Word), и сотрудникам приходилось снова обращаться к разработчикам.
10 |
Предисловие |
В результате мудрое руководство предприятия пришло к выводу, что проще научить пользователей автоматизировать свою работу самостоятельно, и поэтому был заказан этот курс.
Подготовка любого учебного курса — дело очень трудоемкое, и поэтому автор (у которого к тому времени был опыт преподавания более чем 30 официальных курсов Microsoft) постарался подобрать что-нибудь подхо-
дящее из официальных курсов Microsoft Official Curriculum (MOC). Однако его ждала неудача: у Microsoft были предусмотрены только курсы по Access различных версий плюс мини-курсы по очень специфическим вопросам: приложения коллективного использования (курс 2381), решения управления знаниями (курс 1904) и т. п. Сами курсы были скорее обзорными и предназначались для того, чтобы познакомить опытных разработчиков с новыми технологиями.
Тогда автор обратился к книжным полкам. Был куплен десяток книг, которые имели отношение к теме "Программирование в Office", но ни по одной из них сделать учебный курс было нельзя. Некоторые книги под программированием в Office понимали использование математических и финансовых функций в Excel, другие ограничивались рассмотрением элементарных программных конструкций VBA, в-третьих полкниги отводилось на объяснение основ объ- ектно-ориентированного программирования (при этом в реальной работе на VBA определять пользовательские классы приходится достаточно редко). И ни одна из книг не давала возможность "увидеть за деревьями лес" — получить целостное представление об объектных моделях Word, Excel, Access, PowerPoint, Outlook и Project, чтобы дать возможность пользователю самостоятельно находить в них нужные объекты и создавать свои приложения.
Автору пришлось подготавливать этот курс самостоятельно. Был собран и прочитан весь возможный материал, скачано из Интернета и проанализировано несколько сотен приложений VBA, законспектирована официальная документация. Вместе с сотрудниками предприятий решались их проблемы, которые возникали на практике. Уже первый вариант курса был признан заказчиком (и его сотрудниками) очень удачным, а постепенно курс совершенствовался. Вместе с пользователями с разных предприятий на него иногда попадали (из любопытства) опытные разработчики, которые сами рассказывали немало интересного. Постепенно собирался новый материал. За счет общения с большим количеством слушателей удалось отобрать те моменты, которые наиболее важны в практической работе.
Результат — перед вами.
Эта книга отличается от многих других следующим:
она "отлажена" на десятках слушателей с самых разных предприятий. Каждое замечание учитывалось и отражалось в курсе (а потом и в книге),
Предисловие |
11 |
внимание акцентировалось на тех моментах, которые действительно важны для практической работы;
учесть все многообразие ситуаций, которые возникают на предприятиях, невозможно. Поэтому в данной книге был сделан акцент не на рассмотрение отдельных случаев ("как вставить диаграмму в лист Excel"), а на том, как самостоятельно найти решение в подобной ситуации;
для каждого приложения Office дается общая картина того, как устроена его объектная модель и из каких важнейших объектов она состоит (на-
пример, в Word это Application — Document — Selection, Range и Bookmark, в Excel Application — Workbook — Worksheet — Range). Знание этих про-
граммных объектов на 80% покрывает потребности при создании реальных приложений VBA;
поскольку изначально эта книга была учебным курсом, было бы жаль не использовать некоторые преимущества, которые это дает. Для большинства глав предусмотрены задания для самостоятельной работы. Можно попытаться решить их самостоятельно, а можно использовать их просто как дополнительные примеры. После каждого задания приводится подробное решение с комментариями.
Несколько слов о технических моментах. Все примеры в книге приведены для приложений Microsoft Office 2003 в русскоязычной версии. Практически весь материал применим и к программированию в Office XP. Значительно больше отличий в Office 97 и в Office 2000, хотя основные моменты остаются неизменными во всех версиях. Несмотря на то, что в книге рассмотрены все встроенные функции текущей версии VBA и все главные объекты приложений Office текущей версии, сделан акцент на том, чтобы читатель понял, как можно самостоятельно найти необходимую информацию. Поэтому автор надеется, что книга пригодится и для работы с будущими версиями Microsoft Office, и с программными продуктами других фирм, в которых реализована поддержка языка VBA.
Автор совершенно не возражает против использования этой книги в качестве учебного пособия при проведении курсов в других учебных центрах или при организации обучения на предприятиях. Пользуйтесь на здоровье! И, если понравится, обращайтесь в нашу Академию за другими курсами. Наш адрес электронной почты — info@askit.ru, адрес Web-сайта — www.askit.ru. Мы с удовольствием проведем для вас курс из числа уже готовых или создадим новый учебный курс (в особенности по нестандартной тематике). И, может быть, из такого заказа возникнет новая книга — подобно тому, как появилась эта.