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
Dim objOLNamespace As Outlook.NameSpace
Dim colFolders As Outlook.Folders ' коллекция папок
Dim objPeopleFolder As Outlook.MAPIFolder
Dim colPeople As Outlook.Items ' коллекция контактов
Dim objPerson As Object ' один отдельный контакт
Dim strName As String
Объявление объектов только говорит о вашем намерении использовать их. В дальнейшем вы должны создать необходимые объекты с помощью операторов Set внутри подходящих процедур.
При создании объекта из внешнего приложения используется функция СrеateObject. Она открывает соответствующее приложение, которое и создает нужный объект. Возвращаемое функцией значение будет ссылкой на объект, которую можно присвоить подходящей переменной. А чтобы открыть внешнее приложение с уже готовым файлом или документом, используйте функцию GetObject.
Вот программный код процедуры из примера Outlook+Visio, создающей экземпляры нужных объектов:
Sub PeopleDiagram()
Set objOutlook = CreateObject("Outlook.Application")
' Используйте CreateObject("Outlook.Application.8")
' с другой версией Outlook
Set objOLNamespace = objOutlook.GetNamespace("MAPI")
Set colFolders = objOLNamespace.Folders ' все папки
Set objPeopleFolder = colFolders.Item("Personal Folders")
' определение переменных для движения внутрь папки
Set colFolders = objPeopleFolder.Folders
Set objPeopleFolder = colFolders.Item("Contacts")
Set colPeople = objPeopleFolder.Items
' вызов процедуры типа Sub, использующей данные Outlook
ChartAName
End Sub
Обратите внимание, что во многих случаях- и в этом примере тоже- функция СrеateObject нужна только один раз. После того как объект внешнего приложения создан, вы можете использовать его свойства и методы. Как правило, свойства включают другие объекты (в данном случае коллекция Folders, папки Personal Folders и Contacts, a также коллекцию объектов внутри папки Contacts ).
Приложение, которое вы открываете из своего программного кода, выполняется в скрытом виде - на экране оно не отображается. Это очень удобно, если вы хотите использовать в своей программе данные другого приложения, не раздражая при этом пользователя. Но иногда все же нужно показать приложение в его обычной форме. Тогда, в зависимости от приложения, нужно либо установить для свойства Visible значение True, либо использовать метод Display, как здесь: objPeopleFolder.Display
Теперь, наконец, вы готовы использовать объекты внешнего приложения в своей программе точно так же, как и те, которые пришли вместе с вашим VBA-приложением. Вот пример того, как это сделать в Visio при создании организационной диаграммы, использующей имена из папки Contacts, принадлежащей Outlook:
Sub ChartAName()
For Each objPerson In colPeople
strName = objPerson.FullName
...( программный код построения диаграммы Visio на основе этих данных)
Next
End Sub
Программный код на Web-странице не содержит этой процедуры, поскольку я не знаю наверняка, что у вас есть Visio. Вместо вызова этой процедуры в процедуре PeopleDiagram просто отображается диалоговое окно при каждом обращении к данным Outlook. (Правда, у вас может не оказаться также и Outlook, в таком случае данный пример вообще не будет работать.)
Управление базами данных с помощью VBA
Если вы собираетесь использовать VBA для работы с данными, хранящимися в "реальных" базах данных типа файлов Microsoft Jet (формат баз данных, используемых
Access), SQL Server или dBase, то вам, мой друг, определенно потребуется помощь. И придет она от объектной библиотеки. Объектная библиотека для работы с базами данных превращает базы данных и их компоненты - таблицы, запросы и отчеты - в настоящие объекты со свойствами и методами. А когда база данных представлена в виде множества объектов, вам уже не нужно копаться в деталях ее структуры. Более того, один и тот же набор объектов можно использовать для работы со многими базами данных различных типов. Подробные сведения об управлении базами данных с помощью VBA изложены в главе 17.
С помощью специальной внешней объектной библиотеки VBA позволяет использовать объектно-ориентированный подход при работе с дисковыми файлами, в частности для чтения содержимого каталогов и копирования файлов. Соответствующие приемы программирования обсуждаются ниже, в разделах "Работа со свойствами файлов" и "Копирование, изменение и удаление файлов". Можно использовать также функции и операторы VBA, краткое описание которых вы найдете в табл. 11.9 (см. раздел "Работа с файлами").
Наступит время, когда вы захотите, чтобы ваша VBA-программа сохраняла информацию в файле на диске. Может быть, вам потребуется сохранить выбранные пользователем параметры установки, а может, вы пожелаете сохранить значения некоторых переменных, чтобы использовать их при следующем запуске программы. Или программе нужно сохранить в виде файла результаты множества вычислений, или работать с информацией, хранящейся в текстовом документе.
Независимо от того, доступ к какому объему информации вам нужен, VBA делает работу с файлами достаточно простой. Вам не придется выяснять, каким образом организована работа с файлами в Windows, - несколько простых объектов VBA и их методы сделают практически все за вас.
Учитывая меньшую значимость, я не говорю здесь о чтении и записи файлов документов вашего "базового" VBA-приложения. Ясно, что VBA-программы могут работать с информацией, содержащейся в таких документах, и обращаться с файлами документов как с единым целым (обычно с помощью методов Open и Save).
Принципы работы с файлами в VBA