BiVANT  Книги   К началу главы

В.А. Биллиг
Средства разработки
    VBA -
программиста
Офисное программирование. Том 1
"Русская редакция", 2001 г.

Глава  8(2)

Документы и проекты с объектной точки зрения

Объект Document имеет свойство VBProject, возвращающее объект, задающий программный проект данного документа. С другой стороны, объект VBProject является элементом коллекции VBProjects, содержащей проекты всех открытых документов. Коллекция  VBProjects, в свою очередь, вложена в объект VBE. Поэтому давайте поднимемся на несколько этажей выше проекта. Я напомню, что корневым объектом, содержащим все объекты VBA, является объект VBE (Visual Basic Environment или Editor). У этого объекта есть только свойства, позволяющие получить доступ к объектам VBA, лежащим на нижних уровнях иерархии. В справочной системе приведена следующая  объектная модель VBE:

  Рис 8-1 Модель объекта Vba.gif (2087 bytes)

Рис. 1 Модель объекта VBE

Эта модель далеко не полная. Она отражает только коллекции, входящие на верхнем уровне в объект VBE. Рассмотрим коротко эти коллекции:

·        Конечно, основной является коллекция проектов – VBProjects. Эту коллекцию составляют все проекты открытых документов приложения. Заметьте, если одновременно открыто N документов Word, то коллекция VBProjects будет содержать не менее чем N+1 элемент, ¾ по одному проекту на документ плюс общий для всех проект Normal. Видите, я говорю осторожно ¾ «не менее». В среде Office 97 их было бы ровно N+1, в Office 2000 их может быть больше. Заметьте также, проекты разных приложений, например, Excel и Word входят, к сожалению, в разные коллекции, что затрудняет программную работу в проекте документа Word с проектом Excel. Совместная работа с разными проектами внутри одного приложения не вызывает особых трудностей. Достаточно просто иметь общие переменные, вызывать общие процедуры. Как я уже говорил, подробно об этом можно прочесть и познакомиться с примерами в главе 2 книги [2].

·        О том, как создать собственные надстройки – AddIn, разговор пойдет в последующих главах. Сейчас же замечу, что коллекция надстроек, доступных в приложении Word 2000, не пуста. В настоящий момент у меня на компьютере доступны восемь таких надстроек, среди них WinApiViewer, AddIn для построения строк, задающих SQL-операторы, AddIn, реализующий множественный импорт- экспорт объектов за одну операцию и другие.

·        Коллекция окон Windows содержит объекты, задающие окна в Редакторе Visual Basic. Восемь окон входит в эту коллекцию, - окно проекта и окно кода, окно отладки, окно локальных переменных и другие.

·        Коллекция CodePanes содержит подокна, задающие активные окна кода, обычно таких открытых окон в процессе работы одно, но может быть и несколько ведется параллельная отладка нескольких проектов.

·        Коллекция CommandBars содержит, как правило, несколько десятков элементов, задающих инструментальные панели в среде Редактора VBA.                                                                 

Помимо пяти коллекций в объект VBE вложено большое число других объектов, не являющихся коллекциями. Отмечу среди них лишь некоторые объекты.

Объект Events напоминает коллекцию. Каждое из его свойств возвращает объект, тип которого совпадает с именем свойства. Возвращаемые объекты обладают определенным набором событий, которые могут быть подключены в создаваемых  надстройках Addins, позволяя реагировать на те или иные действия. Большинство событий связано с добавлением, удалением, переименованием объектов в коллекциях. Так свойство ReferencesEvents объекта Events возвращает объект ReferencesEvents, обладающий двумя событиями – ItemAdded, ItemRemoved, возникающими при добавлении или удалении ссылок - элементов коллекции References.

Три Active-свойства объекта VBE возвращают соответствующие активные объекты – ActiveVBProject, ActiveWindow, ActiveCodePane. Похожим является свойство SelectedVBComponent, возвращающее выбранную компоненту проекта

       Назад                                             Вперед

 

Hosted by uCoz