- •Что такое Visual Basic for Applications
- •Автоматизация среды Excel
- •Запись простого макроса
- •Выполнение макросов
- •Просмотр кода макроса
- •Редактирование кода макроса
- •Ограниченность макросов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Назначение макросам комбинаций клавиш
- •Где хранить макросы
- •Создание личной книги макросов
- •Сохранение макросов в личной книге макросов
- •Выполнение макросов из личной книги макросов
- •Редактирование макросов в личной книге макросов
- •Удаление макросов из личной книги макросов
- •Назначение макросов командным кнопкам
- •Назначение макроса графическим изображениям
- •Назначение макросов кнопкам панелей инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Введение в процесс разработки приложений
- •Кто будет использовать приложение
- •Откуда будут поступать данные для приложения
- •Где и как будут храниться данные, полученные с помощью приложения
- •Как данные будут обрабатываться приложением
- •Вид выходных данных
- •Типы элементов управления
- •Вставка элементов управления в рабочий лист
- •Форматирование элементов управления
- •Имена элементов управления
- •Экранные формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Модуль: дом для кода vba
- •Обзор процедур
- •Создание процедур
- •Выполнение процедуры
- •Сохранение изменений в модуле
- •Переменные
- •Типы данных
- •Объявление переменных
- •Соглашения об именах переменных
- •Массивы
- •Присвоение значений переменным
- •Использование констант
- •Область видимости переменных и констант
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Именование аргументов
- •Объединение текстовых строк
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Управление выполнением приложения
- •Оператор If
- •Оператор Select Case
- •Использование встроенных диалоговых окон Excel
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Оператор For…Next
- •Оператор Do... Loop
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое объект
- •Объекты, свойства и методы
- •Объектная модель Excel
- •Пять наиболее часто используемых объектов
- •Как понимать иерархию объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов
- •Справочная информация о свойствах и методах
- •Переменные-объекты
- •1: Sub ПримерПеремОбъекта()
- •Коллекции
- •Метод Add
- •Свойство Count
- •1: Sub КоличРабЛистов()
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Объект Application
- •Использование встроенных функций Excel
- •Свойства и методы объекта Application
- •Объект Workbook
- •Объект Worksheet
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Описание объекта Range
- •Свойства объекта Range
- •Методы объекта Range
- •Использование оператора With
- •Оператор For Each
- •Использование объекта Range
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Панели инструментов
- •Просмотр кода
- •Использование справочной системы
- •Просмотр объектов
- •Параметры редактора Visual Basic
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Наблюдение за переменными
- •Исправление ошибок
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Понятие об обработке ошибок
- •Перехват ошибок
- •Написание процедуры обработки ошибся
- •Выход из обработчика ошибок
- •Пример обработчика ошибок
- •Централизованный обработчик ошибок
- •Вопрос и ответы
- •Практикум
- •Упражнение
- •Вставка экранных форм в приложения
- •Свойства экранной формы
- •Выполнение экранной формы
- •Вставка элементов управления в экранную форму
- •Свойства элементов управления
- •Свойства командных кнопок
- •Свойства переключателей
- •Блокировка элементов управления
- •Экранные подсказки к элементам управления
- •Задание порядка обхода элементов формы
- •Назначение быстрых клавиш элементам формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Инициализация значений экранной формы
- •Вызов экранной формы
- •Управление поведением формы
- •Проверка вводимых данных
- •Сохранение данных, введенных в форму
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Настройка панелей инструментов
- •Создание панелей инструментов
- •Процедуры, управляющие панелями инструментов
- •Создание панели инструментов
- •Удаление панели инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Способы изменения меню
- •Программная работа с меню
- •Добавление пунктов и команд меню
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Создание диаграмм
- •Запись макроса построения диаграмм
- •Код макроса
- •Изменение кода макроса
- •Усовершенствованная процедура построения диаграмм
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Работа со сводной таблицей
- •Основы сводных таблиц
- •Запись макроса для создания сводной таблицы
- •Исследование кода макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Базы данных, доступные из Excel
- •Средства доступа к внешним данным
- •Использование ms Query
- •Код записанного макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое ado
- •Объекты доступа к базам данных
- •Использование ado
- •Создание ссылки на библиотеку ado
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Вставка полей в экранную форму
- •Перемещение по записям
- •Редактирование данных
- •Добавление средства поиска
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое автоматизация
- •Основы автоматизации
- •Ссылка на библиотеку объектов приложения-сервера
- •Просмотр библиотеки объектов
- •Создание экземпляра приложения-сервера
- •Использование объектов Microsoft Word
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Автоматическое выполнение процедур
- •Процедуры, выполняемые при наступлении событий
- •Создание надстроек Excel
- •Упражнение
- •Приложение. Ответы Ответы к 1-му часу Тесты
- •Ответы ко 2-му часу Тесты
- •Ответы к 3-му часу Тесты
- •Ответы к 4-му часу Тесты
- •Упражнение
- •Ответы к 5-му часу Тесты
- •Упражнение
- •Ответы к 6-му часу Тесты
- •Упражнение
- •Ответы к 7-му часу Тесты
- •Упражнение
- •Ответы к 8-му часу Тесты
- •Упражнение
- •Ответы к 9-му часу Тесты
- •Упражнение
- •Ответы к 10-му часу Тесты
- •Упражнение
- •Ответы к 11-му часу Тесты
- •Упражнение
- •Ответы к 12-му часу Тесты
- •Упражнение
- •Ответы к 13-му часу Тесты
- •Упражнение
- •Ответы к 14-му часу Тесты
- •Ответы к 15-му часу Тесты
- •Упражнение
- •Ответы к 16-му часу Тесты
- •Упражнение
- •Ответы к 17-му часу Тесты
- •Упражнение
- •Ответы к 18-му часу Тесты
- •Упражнение
- •Ответы к 19-му часу Тесты
- •Упражнение
- •Ответы к 20-му часу Тесты
- •Упражнение
- •Ответы к 21-му часу Тесты
- •Упражнение
- •Ответы к 22-му часу Тесты
- •Упражнение
- •Ответы к 23-му часу Тесты
- •Упражнение
- •Ответы к 24-му часу Тесты
- •Упражнение
Использование объектов Microsoft Word
Сейчас мы создадим простое приложение, вставляющее диапазон ячеек рабочего листа Excel в письмо, созданное в Word. Сначала напишем это письмо (можно, конечно, создать его непосредственно в процедуре Excel, но мы не будем этого делать). Откройте программу Word и введите следующий текст.
Менеджеру по продажам
Посылаю Вам таблицу с итоговыми данными по объемам продаж. Если у Вас есть вопросы, то свяжитесь со мной.
С уважением,
Босс
Сохраните этот текст в файле Письмо.
Теперь вставим в письмо две закладки. Закладка - это поименованное место в документе Word. Для вставки закладок выполните следующие действия.
-
Установите курсор в начало фразы Менеджеру по продажам.
-
Выполните команду Вставка > Закладка, откроется диалоговое окно Закладка.
-
Введите Регион в качестве имени закладки и щелкните на кнопке Добавить.
-
Добавьте пустую строку перед С уважением. Установите курсор в эту пустую строку и вставьте закладку Данные.
-
Сохраните и затем закройте документ Письмо.
Перейдите в Excel и создайте таблицу с данными, подобную приведенной на рис, 23.3. Эта таблица далее будет скопирована и вставлена в документ Письмо.
Вернитесь в Word и начните запись макроса с именем Данные_продажи, предварительно открыв новый документ.
Для начала записи макроса в Word необходимо выполнить те же действия, что и в Excel. Прежде всего выполните команду Сервис > Макрос > Начать запись.
Рис. 23.3. Таблица данных, которую надо вставить в письмо
Во время записи макроса выполните следующие действия.
-
Выберите команду Файл > Открыть и откройте документ Письмо.
-
Выполните команду Правка > Перейти. В диалоговом окне Найти и заменить на вкладке Перейти в списке Объект перехода выберите пункт Закладка, а затем в раскрывающемся списке Введите имя закладки выберите Регион. Щелкните на кнопке Перейти.
-
Теперь выберите закладку Данные и щелкните на кнопке Перейти.
-
Щелкните на кнопке Закрыть для удаления диалогового окна Найти и заменить.
-
Остановите запись макроса.
Выполнив команду Сервис > Макрос > Макросы, откроете диалоговое окно Макрос и выберите макрос Данные_продажи. Для просмотра кода этого макроса щелкните на кнопке Изменить. Удалите строки из процедуры так, чтобы у вас осталось то, что показано в листинге 23.2.
Листинг 23.2. "Остаток" процедуры Данные продажи
Sub Данные_продажи()
Documents.Open FileName:="Письмо.doc"
Selection.GoTo What:=wdGoToBookmark, Name:="Регион"
Selection.GoTo What:=wdGoToBookmark, Name:="Данные"
End Sub
Этот код будет основой процедуры, которую мы создаем в Excel. Скопируйте эту процедуру в буфер обмена. Закройте Word, вернитесь в Excel и откройте редактор Visual Basic. Добавьте модуль в текущую рабочую книгу и вставьте в него скопированную процедуру. Теперь надо создать экземпляр Word, а также перед каждой строчкой процедуры поставить имя переменной, соответствующей экземпляру Word. Самый простой способ сделать это - применить оператор With. Код измененной процедуры показан в листинге 23.3.
Листинг 23.3. Процедура Данные продажи с экземпляром Word
Sub Данные_продажи()
Dim y As Word.Application
Set y = CreateObject("Word.Application")
With y
.Documents.Open FileName:="Письмо.doc"
.Selection.GoTo What:=wdGoToBookmark, Name:="Регион"
.Selection.GoTo What:=wdGoToBookmark, Name:="Данные"
End With
End Sub
Это почти все. Осталось добавить код, копирующий таблицу данных в Excel и вставляющий ее в документ Word. Полный код процедуры приведен в листинге 23.4, добавленный код выделен полужирным шрифтом.
Листинг 23.3. Законченная процедура Данные продажи '
Sub Данные_продажи()
Dim y As Word.Application
Set y = CreateObject("Word.Application")
With y
.Visible = True
'В следующем операторе путь к файлу Письмо зависит от того,
'где вы сохранили этот файл. При необходимости внесите
'изменения в путь
.Documents.OpenFileName:="C:\Мои документы\Письмо.doc"
Worksheets("Лист1").Range("B1").Copy
.Selection.GoTo What:=wdGoToBookmark, Name:="Регион"
.Selection.Paste
Application.CutCopyMode = False
Worksheets("Лист1").Range("A3:D11).Select
.Selection.Copy
.Selection.GoTo What:=wdGoToBookmark, Name:="Данные"
.Selection.Paste Application.CutCopyMode = False
End With
End Sub
Первый новый оператор .Visible = True устанавливает свойство Word Visible (Видимый) как True, тем самым открывая окно программы Word и выводя его на передний план.
Далее открывается документ Письмо. Затем копируется содержимое ячейки В1, содержащей название региона, осуществляется переход к закладке Регион и вставляется содержимое ячейки В1. Установка свойства Excel cutCopyMode (Режим вырезания и копирования) как False снимает выделение с ячейки В1:
.Documents. OpenFileName:="C:\Мои документы\Письмо.dос"
Worksheets("Лист1").Range("B1").Copy
.Selection.GoTo What:=wdGoToBookrnark, Name:="Регион"
.Selection.Paste
Application.CutCopyMode = False
Затем аналогичная процедура копирования и вставки выполняется для диапазона А3:D11.
Если окно Word открыто, закройте его и выполните процедуру Данные_продажи. Сначала откроется окно Word, затем в нем откроется документ Письмо. Через несколько мгновений в этот документ будут вставлены данные из рабочего листа Excel (рис. 23.4). Это простой учебный пример, в реальной жизни вы, по-видимому, захотите отформатировать полученный документ, но это, как говорится, совсем другая история.
Рис. 23.4. Документ Word со вставленными данными Excel
Для повторного выполнения процедуры закройте Word без сохранения изменений в документе Письмо.
В заключение перечислим этапы выполнения этого примера.
-
Создание файла в приложении-сервере.
-
Создание таблицы данных в Excel (приложении-клиенте).
-
Запись макроса в приложении-сервере.
-
Копирование кода записанного макроса и вставка его в процедуру, создаваемую в Excel.
-
Изменение процедуры Excel для создания экземпляра приложения-сервера.
Резюме
Программа Excel выполняет многие действия с числовыми данными значительно лучше других программ. Другие приложения имеют свои сильные стороны, которыми не обладает Excel, например создание текстовых документов в программе Word или показ презентаций в PowerPoint. В этом часе вы узнали, как посредством технологии автоматизации внедрять объекты других приложений в процедуры VBA. Это расширяет возможности не только программы Excel, но и ваши возможности как программиста.