панель элементов управления редактора Visual Basic. В главе 21 приведен обзор других ресурсов VBA, о которых вам полезно знать, - это журналы, Web страницы, программные средства различных производителей.
Глава 20. Десятка (без трех) эффектных решений с помощью VBA.
В этой главе ...
~ Сохранение установок программы в реестре Windows и извлечение их оттуда
~ Доступ к объектам других приложений
~ Работа с базами данных в VBA
~ Сохранение информации на диске и ее чтение с диска
~ Сохранение табличной информации в объектах Dictionary
~ Создание своих собственных объектов
~ Установка элементов управления ActiveX
Прочитав книгу до этой главы (а значит, большую ее часть), вы стали почти экспертом по VBA. Теперь вас уже не нужно постоянно вести за ручку, поэтому в этой главе, знакомящей с целым рядом важных приемов программирования в VBA, описания будут довольно сжатыми. Вы сможете воспользоваться предлагаемой здесь информацией на практике, чтобы почувствовать удовольствие от освоения достаточно тонких приемов программирования.
Сохранение информации в реестре Windows
Чтобы сохранить установки и значения других переменных, можно использовать небольшие файлы на диске, но реестр Windows как раз и предназначен для хранения подобных данных. VBA обеспечивает все необходимые средства для создания параметров реестра, размещения там данных и последующего извлечения информации.
Сохранение элемента информации в реестре осуществляет оператор Save Settings, который автоматически создаст заданный вами параметр, если его в реестре не окажется. Синтаксис оператора следующий:
Save Settings приложение, раздел, параметр, значение
Здесь приложение, раздел и параметр- это имена соответствующих уровней иерархии реестра. Все установки реестра для одной VBA-программы должны размещаться в одной, созданной специально для этой программы ветви реестра (используйте аргумент приложение для идентификации этой ветви). Сохраняемые в реестре данные можно разбивать на разделы и параметры совершенно произвольно, используя при этом произвольные имена.
Если вы назвали свою программу "Случайные цитаты" и хотите добавить в реестр параметры, хранящие информацию о том, сколько раз вызывалось диалоговое окно, содержащее случайную цитату, используйте для этого оператор типа:
SaveSettings "Случайные цитаты", "Параметры", _
"Число вызовов", "6"
Последний аргумент, "6", задает реальные данные, которые должны быть помещены в реестр. На рис. 20.1 приведен результат выполнения этой строки программного кода.
Рис. 20.1. Вид реестра Windows после добавления пользовательского параметра
Подобным образом для извлечения данных из реестра используется функция Get Setting. В ее синтаксисе, показанном ниже, первые три аргумента обязательны, а аргумент по_умолчанию не обязателен:
Get Setting приложение, раздел, параметр, по_умолчанию
Функция Get Setting используется, когда нужно выяснить, какое значение хранится в некотором параметре реестра. В программном коде нужно присвоить значение функции
Get Setting переменной (вроде String или Variant ), например, так:
sngЧисло = GetSetting("Случайные цитаты", "Параметры", _
"Число вызовов")
Последний аргумент, аргумент ло_умолчанию, определяет значение, которое должна вернуть функция Get Setting, если указанный параметр в реестре не найден.
В VBA есть еще две команды, предназначенные для работы с реестром.
* функция GetAllSettings возвращает список всех параметров и их значений
в форме двумерного массива строк.
* Оператор DeleteSetting дает возможность удалить как значение, хранящееся в реестре, так и сам параметр.
Доступ к объектам других приложений
За рамками вашего VBA-приложения лежит ослепительная страна других приложений, и ничто не мешает вам отправиться туда в путешествие с помощью VBA. Все больше приложений инкорпорирует объектную модель СОМ, нагло выставляя свои объекты напоказ таким образом, что вы получаете возможность доступа к ним из своих программ.
В качестве простого примера предположим, что необходимо построить организационную диаграмму в Visio, основываясь на данных, хранящихся в папках Microsoft Outlook. Если вы уже знаете, как создавать элементы графики и связи между ними в Visio, новым для вас будет только создание программного кола, позволяющего извлечь информацию, "прописанную" в Outlook.
Программа Outlook не предлагает полномасштабную поддержку средств разработки VBA программ (в частности, редактор Visual Basic), но Outlook выставляет для использования свои объекты в соответствии со стандартом СОМ. После установки связи с Outlook в VBA вы сможете использовать объекты Outlook в своей программе, как будто они родные для вашего "базового" приложения.
Основы межпрограммного взаимодействия
Первое правило очевидно; можно использовать объекты другого приложения, если оно установлено в системе. Если это условие выполнено, для работы с объектами приложения, поддерживающего стандарт СОМ, требуется выполнить ряд предварительных действий.
1. В редакторе Visual Basic добавить ссылку на объектную библиотеку внешнего приложения.
2. Объявить переменные для объектов, которые придется использовать в программе.
3. Создать экземпляры соответствующих объектов с помощью функции Сrеat eObject.
В следующих трех подразделах эти шаги рассматриваются детальнее.
Чтобы информировать Visual Basic об объектной модели внешнего приложения, нужно добавить и активизировать ссылку на объектную библиотеку этого приложения. В окне редактора Visual Basic выберите Tools?References, чтобы открыть диалоговое окно References (Ссылки).
Если Outlook установлена на вашем компьютере, объектная библиотека Outlook уже должна присутствовать в списке Available References (Доступные ссылки) диалогового окна References. Ее нужно найти в этом списке и установить флажок рядом с ее именем, чтобы библиотека стала доступной. Если нужной библиотеки в списке не оказалось, добавьте ссылку в список сами, воспользовавшись кнопкой