52953.fb2 VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 120

VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 120

Cancel

End If

End Sub

Иногда имеет смысл отложить проверку данных элемента управления до того момента, когда пользователь щелкнет на кнопке ОК, закрывающей форму. Это приходится делать тогда, когда критерии проверки используют значения нескольких элементов управления в форме. Если вы выбрали такой тип проверки, поместите соответствующий программный код в процедуру обработки события Click кнопки ОК. Предположим, вы разрабатываете форму, которая позволит пользователю ввести даты будущих важных событий. В форме есть список, в котором пользователь может указать, за какое время до наступления события нужно напомнить о нем. Если пользователь запланирует некоторую встречу на завтра, но попросит напомнить о ней за два дня до этого, вы можете сообщить о запрете ввода таких данных уже после того, как пользователь щелкнет на кнопке ОК. Таким образом вам не придется просить пользователя ввести данные в элементы управления в определенном порядке, чтобы избежать появления сообщений об ошибке.

Часть V Великолепные десятки

В этой части...

Эта короткая часть, оставленная на десерт, подогревает интерес к УВЛ множеством эффектных примеров. Попробовав представленное здесь, вы непременно захотите еще.

В главе 20 обсуждается ряд тонких приемов программирования, вполне способных заставить "летать " вашу VBA-программу.

Среди рассмотренных тем - запись информации в реестр

Windows и извлечение информации из него, использование возможностей других приложений и компонентов, чтение и запись дисковых файлов, а также добавление элементов управления ActiveX в панель элементов управления редактора 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. Ее нужно найти в этом списке и установить флажок рядом с ее именем, чтобы библиотека стала доступной. Если нужной библиотеки в списке не оказалось, добавьте ссылку в список сами, воспользовавшись кнопкой Browse (Обзор).

Переменные для объектов из внешних приложений объявляются стандартным для VBA образом. Чтобы узнать, какие объекты внешнего приложения доступны, используйте либо обозреватель объектов редактора Visual Basic, либо файл справки этого внешнего приложения. Операторы следующего фрагмента программного кода объявляют переменные для объектов Outlook, которые предполагается позже использовать в программе:

Dim objOutlook As Outlook.Application