Тема 2.7 Объектная модель компонентов MS Office. Библиотеки типов
На внутреннем уровне пакет MS Office представлен в виде совокупности взаимодействующих объектов. Каждый из них наделен специфичным набором свойств и методов. Совокупность объектов и связей между ними называется объектной моделью. Любое приложение MS Office имеет свою объектную модель. В виде объектов представлены все доступные разработчику элементы офисных программ вплоть до приложения как такового (объект Application). Знание структуры объектных моделей Office позволяет создавать профессиональные приложения, выполняющие необходимую обработку данных и подготовку документов. Компоненты объектной модели каждого приложения Microsoft Office – объекты и семейства – размещаются в одноименных библиотеках (файлы с расширением .old). Существуют стандартная библиотека объектов VBA и стандартная библиотека Office, библиотеки объектов Word, Excel, Access и прочие объектные библиотеки, предоставляющие различные функциональные возможности.
Чтобы просмотреть список объектных библиотек, доступных в конкретном приложении Microsoft Office (например, в Word), необходимо в редакторе VBA выбрать команду меню "Вид/Просмотр Объектов" и раскрыть список "Project/Library". На рис. 6 показан раскрытый список объектных библиотек, доступных в Microsoft Word.
Рисунок 6. Список объектных библиотек, доступных в Microsoft Word
Коротко охарактеризуем эти библиотеки.
Word – библиотека, задающая основу документов Word. Здесь хранится класс, задающий корневой объект Word.Application, классы объектов, вложенных в корневой объект.
Office – библиотека объектов, общих для всех приложений Microsoft Office. Здесь находятся CommandBar – классы, определяющие инструментальные панели, и классы других общих объектов. Здесь же находятся классы, задающие "помощник" (объект Assistant) и все классы, связанные с ним. Stdole – библиотека классов, позволяющая работать с ActiveX-объектами (OLE-объектами) и функциями OLE-автоматизации (OLE-Automation).
VBA – библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection, Err и прочие.
Project – проект по умолчанию, связанный с документом. Классы, которые могут программистом создаваться в этом проекте, методы, свойства – все это доступно для просмотра так же, как и объекты классов, встроенных в стандартные библиотеки.
Normal – проект, доступный для всех документов Word. Здесь могут храниться функции и классы, используемые всеми документами Word.
Библиотека VBA. Объекты общего назначения
Коллекции VBA
Коллекции VBA - это упорядоченные наборы элементов, представляющие собой единое целое. Любая коллекция VBA - экземпляр класса Collection. Все элементы коллекции (члены) представлены ссылками на фактические объекты. Это позволяет объединять в коллекцию данные различных типов. Коллекция - это списочная структура, поддерживающая операции создания коллекции как таковой, добавления и удаления элементов, получения элемента по его индексу.
В коллекцию можно добавлять элементы методом Add, удалять ранее добавленные элементы методом Remove и обращаться к элементам методом Item, в т.ч. и итеративно, например с использованием инструкции For Each...Next. В качестве примера приведем коллекцию UserForms, элементами которой являются все загруженные формы UserForm приложения. Как и все коллекции, UserForms имеет свойства Count и Item, а также метод Add. Свойство Count возвращает количество загруженных форм. Свойство Item возвращает определенный компонент коллекции, т.е. форму. Метод Add добавляет в коллекцию новую форму. Еще один пример - набор всех элементов управления, размещенных на пользовательской форме UserForm, представляемый коллекцией Controls. Фрагмент кода, приведенный в листинге 27, устанавливает значение свойства Visible каждого элемента коллекции Controls в False (делает элемент невидимым на форме):
Листинг 27. Использование коллекций
' Подразумевается, что форма UserForm1 добавлена в проект и загружена ' в процессе выполнения приложения ... For Each с in UserForm1.Controls с.Visible = False Next ...
Объект Debug
Объект Debug направляет вывод приложения в окно отладки (Immediate) во время выполнения. Этот объект был использован в ряде предыдущих примеров. Объект Debug поддерживает 2 метода:
- Print - безусловный вывод указанного выражения в окно отладки;
- Assert - вывод по заданному условию.
Объект Err
Объект Err - содержит информацию об ошибках времени выполнения. Ошибки такого рода генерируются системными функциями VBA, либо программистом в коде программы. При возникновении ошибки времени выполнения (run-time error), свойства объекта Err принимают значения, уникальным образом идентифицирующие эту ошибку и используемые для ее обработки.
Для генерации ошибки программным путем используется метод Raise. Этот метод, совместно с командой Error, используется для генерации системных ошибок в модулях классов. В прочих программных модулях этот метод позволяет генерировать пользовательские ошибки. Основное свойство этого объекта - код ошибки (Number).
Все свойства объекта Err сбрасываются при выходе из подпрограммы, вызвавшей ошибку, кроме случаев, когда инструкция Resume (инструкция передачи управления после обработки ошибки) находится вне блока обработки.
Метод Clear используется для принудительного сброса свойств объекта Err. Пример использования объекта Err приведен на рис. 7.
Рис. 7. Пример использования объекта Err
Объектная модель Excel
Приложение MS Exel представляет разработчику около полусотни объектов и коллекций, доступных разработчику. Подробное описание модели доступно в справочной системе, здесь кратко приведем только некоторые из объектов Excel.Объект Workbook
Объект Workbook представляет доступ к открытой рабочей книге Excel. Этот объект является элементом коллекции Workbooks. У объекта имеется множество свойств и методов, основными являются Sheets — коллекция рабочих листов, Worksheet — определенный рабочий лист, Range — диапазон ячеек, Selection — текущее выделение, CellFormat — формат ячеек. Пример использования некоторых объектов рабочей книги приведен в листинге 27.Листинг 27. Программирование объектов рабочей книги
Sub ChangeCellFormat Range(“A1”).Select Selection.Interior.ColorIndex = 36 MsgBox “Ячейка A1 залита жетым цветом” With Application .FindFormat.Interior.ColorIndex = 36 .ReplaceFormat.Interior.ColorIndex = 36 End With ActiveCell.Replace What:=””, Replacement:=””, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _ ReplaceFormat:=True MsgBox “Ячейка A1 залита зеленым цветом” End Sub
CC-BY-CA Анатольев А.Г., 31.01.2012