Компоненты моделей объектов MS Office
14.1. Модель объектов
Чтобы использовать VBA, необходимо иметь представление об объектной модели приложения. Модель объектов показывает структуру объектов офисного приложения и их взаимосвязи. Каждое приложение предоставляет множество взаимосвязанных объектов. Объектами являются сами приложения Application (центральный или корневой объект) и их компоненты (встроенные объекты).
Примеры объектов
MS Excel – рабочий лист Worksheet, рабочая книга Workbook, диаграмма Chart
MS Access – форма Form, отчет Report
MS Word – документ Document, абзац текста Paragraph
MS Power Point – презентация Presentation, слайд Slide
Каждый элемент меню, каждая командная кнопка, любой элемент офисного документа являются объектами MS Office, которыми можно управлять программно.
Подробно структура объектов, синтаксис свойств и методов, перечень событий рассматриваются в справочнике по VBA (Help) соответствующего приложения. Справка по Visual Basic на рис.14.1 отражает структуру справочника VBA для MS Word. Нажатие на Microsoft Word Object Model развернет структуру объектов MS Word. В MS Excel это строка Microsoft Excel Object Model, а в MS PowerPoint строка имеет название Microsoft PowerPoint Object Model.
На рис.14.2 представлены два фрагмента модели объектов MS Excel: фрагмент объекта Application и фрагмент объекта Range; видна иерархическая структура объекта Range, который подчинен объекту Application.
Модель объектов отражает иерархические связи между объектами. На нулевом уровне иерархии расположен центральный объект, представляющий само приложение, которому подчинены другие объекты, составляющие первый уровень иерархии. Каждому из объектов первого и последующих уровней могут быть подчинены объекты следующего уровня и т. д. Например, в объекте Document содержатся объекты Paragraph. Доступ к объектам любого уровня возможен, если выполняется приложение, т. е. объект Application существует.
Модель объектов содержит простые объекты и коллекции объектов. Коллекция объектов (Collection) – это объект специального типа, существующий для управления объектами группы. Например, Workbooks является коллекцией всех открытых рабочих книг – объектов Workbook, а Worksheets – коллекцией рабочих листов некоторой рабочей книги – объектов Worksheet. Количество элементов коллекции заранее не фиксируется. Новый элемент может быть добавлен в произвольное место коллекции.
Операторы языка могут обращаться как к отдельному элементу коллекции (к объекту Workbook или к объекту Worksheet), так и ко всем объектам коллекции одновременно (к объекту Workbooks или к объекту Worksheets). Коллекция объектов и объекты этой коллекции обладают различными свойствами и методами.
Коллекция объектов, объединяя группу подобных объектов, является упорядоченной совокупностью объектов. Для доступа к конкретному объекту в коллекции можно использовать его имя или порядковый номер в коллекции: например, Workbooks(1) указывает на первую рабочую книгу, а Worksheets("Sheet2") указывает на лист с именем Sheet2. Элементы коллекции перенумеровываются при удалении или добавлении элементов в коллекцию.
Совокупность объектов приложения определяет содержимое и функциональные возможности приложения, а конкретные объекты, их свойства и методы – позволяют получить доступ к содержимому и функциональным возможностям объекта. В общем случае свойства описывают сам объект или его содержимое, а методы позволяют управлять функциональными возможностями объекта.
14.2. Просмотр объектов, их свойств и методов (Object Browser)
Средство Object Browser предоставляет возможность просмотра и поиска объектов, их свойств и методов. Это средство доступно только в редакторе VB. Object Browser вызывается нажатием на пиктограмму или одноименной командой из меню View. Можно нажать клавишу F2.
Окно Object Browser
Окно Object Browser (рис.14.3) отображает классы, свойства, методы, события и константы объектных библиотек и процедур проекта. Средство Object Browser не дает представления об иерархии объектов.
Окно Object Browser состоит из нескольких раскрывающихся списков и панелей (окон), каждая из которых отображает часть результата поиска. Линии разбивки, разделяющие панели этого окна, позволяют изменять их размеры.
Верхний левый список на рис.14.3 называется Projects/Libraries и содержит перечень моделей объектов и библиотек, доступных для активного проекта (рис.14.4). При выборе значения All Libraries отображаются объекты всех доступных библиотек и проектов. Объект Office этого списка содержит объекты, общие для офисных приложений.
После выбора модели объектов в окне классов появляется перечень классов. Список всегда начинается с класса globals, компоненты которого доступны во всех модулях проекта.
После выделения класса компоненты этого класса отображаются в окне справа (рис.14.3). Компоненты класса обычно упорядочены по алфавиту. Порядок сортировки изменяется командой Group Members (Компоненты группы) контекстного меню. Каждому типу компонента соответствует свой значок (см. таблицу 14.1). Подробно см. Help, статья "Icons Used in the Object Browser and Code Windows". Если для класса или для компонента класса существует программный код, соответствующая строка выделяется жирным шрифтом.
В окне описания (нижняя панель на рис.14.3) высвечиваются краткие сведения по выделенному компоненту. Панель описания компонента показывает синтаксис выбранного объекта. Кроме формального описания, здесь обычно содержатся гиперссылки, нажатие на которые высвечивает соответствующую статью из Help'а.
В окне классов на рис.14.3 отражена модель объектов MS Excel, выделен объект Sheets,в окне компонентов перечислены свойства, методы и события коллекции Sheets и показаны сведения о методе Add этой коллекции.
Значок | Компонент | Значок | Компонент |
---|---|---|---|
Свойства | Свойства по умолчанию | ||
Методы | Методы по умолчанию | ||
События | Константы | ||
Модули | Классы | ||
Типы, определяемые пользователем | Глобальные объекты | ||
Библиотеки | Проекты | ||
Встроенные ключевые слова и типы | Сгруппированные константы |
Панель инструментов Object Browser
На панели инструментов расположены кнопки, облегчающие поиск объектов приложения (см. рис.14.3).
Go Back позволяет перейти к объекту, ранее выбранному в списке компонентов класса.
Go Forward повторяет выбор объектов в списке компонентов класса, если осуществлялся возврат к ранее выбранному объекту.
Copy to Clipboard копирует текст из окна описания после выделения нужного фрагмента, например, имени процедуры со списком формальных параметров. Если фрагмент не выделен, то копируется только название компонента. Допускается перетаскивание мышью текста из окна описания в окно модуля. Можно использовать команду Copy из контекстного меню окна описания.
View Definition помещает курсор в окно описания выделенного класса или компонента.
Search выполняет поиск библиотек, название компонентов которых соответствует образцу текста в поисковой строке Search Text. В этой строке можно вводить или выбирать искомый текст. Запоминаются значения четырех последних поисковых строк. В строке поиска допускается использование стандартных подстановочных символов. Команда Find Whole Word Only ("Только слово целиком") контекстного меню пиктограммы поиска задает поиск целых слов. Если поиск произведен успешно, то сведения о найденных компонентах размещаются на панели результатов поиска – панели Search Results. Эта панель отображает найденные библиотеки в алфавитном порядке. На рис.14.3 показан результат поиска метода Add.
Hide/Show Search Results сворачивает или раскрывает окно результата поиска соответственно.
Help переключает в справочник по VBA на статью о компоненте, высвеченном в окне описания.
Выход из Object Browser
Переход к редактируемой процедуре осуществляется простым щелчком мыши, если текст процедуры виден на экране. В противном случае можно закрыть окно Object Browser нажатием на кнопку закрытия окна. При этом содержание справки сохраняется до следующего вызова Object Browser.
Можно в списке проектов/библиотек выбрать название нужного проекта, и тогда в окне классов появятся компоненты проекта (рис.14.5). Двойной щелчок на имени процедуры или названии модуля (процедурного листа) переводит в редактор VB.