- •Что такое 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-му часу Тесты
- •Упражнение
Вопросы и ответы
Вопрос. Только ли с базами данных Access можно работать посредством ADO?
Ответ. Нет, с помощью ADO можно работать со многими типами баз данных, включая SQL Server и FoxPro.
Вопрос. Можно ли процесс импортирования данных посредством ADO записать с помощью макроса?
Ответ. Нет, так как запрос на выборку данных здесь основан на использовании специальных команд, которые невозможно выполнить с помощью средств Excel.
Практикум
С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.
Тесты
-
Какой аргумент метода Open используется для указания объекта, из которого извлекаются данные?
-
Истинно или ложно следующее утверждение: для организации доступа к внешним данным с помощью ADO достаточно создать соответствующую процедуру?
-
Какой объект сохраняет информацию о проблемах, возникших при использовании ADO?
-
Истинно или ложно следующее утверждение: с помощью ADO можно получить доступ только к базам данных Microsoft Access?
-
Какой объект представляет массив данных, извлеченный из внешнего источника с помощью ADO?
-
Как прервать соединение с внешним источником данных?
-
Назовите четыре этапа работы с ADO.
Упражнение
Создайте экранную форму с тремя переключателями Заказы, Поставщики, Товары (соответствуют таблицам в базе данных Борей). Напишите процедуру, которая импортировала бы данные из таблицы базы данных Борей в соответствии с выбранным переключателем.
22-й час. Еще об ADO
В этом часе мы углубим свои знания о технологии ADO. Основное внимание будет уделено объекту Recordset (Набор записей), его свойствам и методам. Используя эти свойства и методы, мы создадим экранную форму, отображающую данные из внешнего источника данных.
В этом часе будут рассмотрены следующие вопросы.
-
Извлечение полей из набора импортируемых данных и вставка их в экранную форму.
-
Средства перемещения по записям в экранной форме.
-
Редактирование извлеченного набора записей.
Вставка полей в экранную форму
Вместо непосредственной вставки импортируемых данных в рабочий лист их можно просмотреть с помощью экранной формы. Это предоставляет пользователю простой дружественный интерфейс для работы с данными.
Для создания экранной формы выполните следующие действия.
-
В редакторе Visual Basic вставьте экранную форму в новую рабочую книгу.
-
Используя рис. 22.1 как образец, добавьте в экранную форму элементыуправления.
-
Установите следующие свойства элементов управления:
Элемент управления
Название
Свойство Name
Другие свойства
Поле ввода
Код товара
txtProductID
Поле ввода
Марка
txtProductName
Поле ввода
Цена
txtUnitPrice
Поле ввода
Есть на складе
fetUnitsInStock
Командная кнопка
ОК
cmdOK
Default=True
-
Задайте для формы имя frmProductInfo и заголовок Информация о товаре.
Рис. 22.1. Экранная форма, которая будет отображать данные из базы данных Access Борей
Далее необходимо установить ссылку на библиотеку Microsoft ActiveX Data Objects 2.0. выполнив команду Tools > References (Сервис > Ссылки). Теперь пришло время создать первую процедуру. Эта процедура, UserForm_Activate, будет выполняться при открытии формы. Код процедуры приведен в листинге 22.1.
Листинг 22.1. Процедура UserForm_Activate
1: PrivateSubUserForm_Activate()
2: cnnProduct.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data _
3: Source=C:\Program Files\Microsoft _
Office\Office\Samples\Борей.mdb"
4:
5: rstProduct.Open _
6: "Select КодТовара, Марка, Цена, НаСкладе from Товары", _
cnnProduct, adOpenKeyset, adLockOptimistic, adCmdText
7: txtProductID.Text - rstProduct.Fields(0).Value
8: txtProductName.Text - rstProduct.Fields(1).Value
9: txtUnitPrice.Text = rstProduct.Fields(2).Value
10: txtUnitsInStock.Text - rstProduct.Fields(3}.Value
11:
12: End Sub
Процедура начинается с установления соединения с базой данных Борей. Далее применяется оператор Select (Выбор) для создания объекта Recordset, т.е. набора извлекаемых данных. Значения полей затем используются для задания значения свойству Text (Текст) полей ввода экранной формы. Отметим, что поля индексируются целыми числами, начиная с нуля.
В окне кода в область общих объявлений надо также поместить следующие две строки:
Dim cnnProduct As New ADODB.Connection
Dim rstProduct As New ADODB.Recordset
Двойным щелчком на командной кнопке OK откройте процедуру cmdOK_click и введите в нее код:
frmProductInfo.Hide
cnnProduct.Close
Выполните экранную форму. Вы должны увидеть в полях экранной формы значения первой записи из набора записей, извлекаемых из базы данных. Щелкните на кнопке ОК для закрытия формы. Теперь надо научиться переходить от одной записи к другой в наборе извлекаемых записей.