VBA для чайников - Стив Каммингс
Шрифт:
Интервал:
Закладка:
Что такое объектная модель
Как уже упоминалось, объекты VBA существуют в иерархической зависимости один от другого. Кроме обладания своими собственными свойствами, методами и событиями, объекты высших ступеней иерархии служат в качестве контейнеров для одного или целого множества подчиненных объектов. Эти вложенные объекты в свою очередь содержат другие объекты и т.д.
Вся система таких иерархических отношений конкретного VBA-приложения называется объектной моделью этого приложения. Часто представляемая в графическом виде, объектная модель приложения описывает вложения одних объектов в другие. Пример графического представления одной из объектных моделей показан на рис. 12.2.
Рис. 12.2. Объектная модель Visio с компакт-диска Visio 2000
Как видно из рис. 12.2, на вершине объектной модели VBA-приложения находится объект Application (приложение), являющийся контейнером для всех других объектов приложения, с которыми вы можете работать. Ваш VBA-проект тоже является объектом-контейнером, в котором размещаются все созданные вами модули программного кода и формы, равно как и документ проекта. (О структуре VBA-проекта и его компонентах говорилось в главе 7.)
Понимание важности объектной модели
Вам придется сообщать VBA о том, какой конкретный объект нужен вам для работы, поэтому хорошее понимание объектной модели VBA-приложения оказывается очень важным для эффективной работы в нем. С помощью диаграммы объектной модели приложения, подобной показанной на рис. 12.2, очень просто проследить всю цепочку объектов, которой принадлежит нужный вам объект. В данном случае, например, сразу видно, что объект Connect является членом коллекции Connects, принадлежащего объекту Master, который в свою очередь... .
Расширение объектной модели
В программах, созданных в VBA, совсем не обязательно ограничивать себя использованием объектов только одного VBA-приложения. Не обязательно даже ограничиваться использованием только VBA-приложений как таковых. Можно использовать вообще любые приложения и "компоненты", удовлетворяющие стандарту Component Object Model (COM) фирмы Microsoft (Component Object Model можно перевести как объектная модель компонента).
Стандарт СОМ представляет собой набор технических спецификаций, регламентирующих правила определения объектов в приложениях и других программных единицах, а также правила предоставления таких объектов для использования в других приложениях. Чтобы обозначить, что удовлетворяющим стандарт СОМ приложением можно управлять из другого приложения, используется специальный термин автоматизация. Кстати, стандарт СОМ относится не только к VBA или Visual Basic, он понятен многим другим средствам разработки приложений (например, компиляторам C++), которые таким образом могут использовать соответствующие объекты.
Стандарт СОМ открывает фантастические возможности для создания мощных VBA приложений, допускающих настройку пользователем. Теперь вы можете (я не сказал легко) создавать приложения, позволяющие одновременно обрабатывать информацию, полученную из диаграмм Visio, документов Word, рабочих листов Excel и т.п. Ваше приложение может отображать всю эту информацию в окнах, которые разработаны вами, но которые в то же
время используют специальные функциональные возможности отображения информации этих приложений-компонентов.
Разработка пользовательских приложений такого уровня, очевидно, относится к непростым задачам, поэтому в данной книге это будет обсуждаться весьма поверхностно (в главе 14). Но я должен по крайней мере упомянуть, что возможности VBA открывают путь к великим свершениям.
Формы в VBA – это тоже объекты
Формой называют любое созданное в VBA пользовательское окно. Если в вашей программе предусмотрен ее собственный пользовательский интерфейс, формами будут как главное окно программы, так и все другие диалоговые окна, отображаемые вашей программой (рис. 12.3).
Главное, здесь нужно понять, что формы VBA сами являются объектами, т.е. представляют собой сущности, содержащие как информацию (задающую, например, внешний вид формы на экране), так и набор средств для обработки этой информации. Официально формы в VBA описываются в терминах объекта User Form.
Рис. 12.3. Примеры форм VBA
Как и любые другие уважающие себя объекты в VBA, формы прекрасно вписываются в рамки парадигмы объектной модели. Каждый объект UserForm принадлежит одновременно двум коллекциям объектов - VBA-проекту, в котором хранится форма, и коллекции
UserForms, содержащей все формы, загружаемые программой. В свою очередь, объект UserForms служит контейнером для коллекции Controls, содержащей элементы управления, помещенные в форму.
Точно так же элементы управления в форме- кнопки, флажки, переключатели и всевозможные другие рычажки, которыми можно любоваться и играть, - тоже являются объектами.
Для каждого типа элементов управления в VBA предлагается объект соответствующего типа.
Техника, с помощью которой можно получить доступ к конкретной форме или помещенному в нее элементу управления и использовать свойства, методы и события этого объекта, ничем не отличается от техники, используемой с другими объектами, о которых говорится в этой главе. Подробнее о работе с формами и элементами управления (а значит, и соответствующими объектами) говорится в главах 10 и 19.
Использование объектов в программе
Теперь, когда теоретические основы пройдены, наступает время практических рекомендаций по программированию с использованием объектов VBA. Начнем, пожалуй, с использования в программном коде свойств, методов и событий объектов, а уж после этого перейдем к более тонким вопросам идентификации объектов, которые предполагается использовать.
Хотя в самом понятии объекта и есть кое-что, над чем можно поломать голову, использовать объекты достаточно просто. Поскольку объекты имеют имена, вы всегда можете знать, с каким из объектов работаете. Чтобы идентифицировать в программном коде метод или свойство объекта, с которыми предполагается иметь дело, нужно просто напечатать имя объекта, за ним точку и, наконец, имя метода или свойства.
Например, MyShape.LineStyle идентифицирует свойство LineStyle объекта с именем MyShape в Visio. Точно так же MyWorksheet. Calculate идентифицирует метод Calculate объекта рабочего листа с именем MyWorksheet в Excel.
Правда, здесь вы можете задать себе вопрос: "Но как же мне узнать имя объекта, которое необходимо поместить в начале?" Блестящий вопрос! Вот только ответ на этот вопрос требует достаточно пространных пояснений, которые я отложу до раздела ''Идентификация объекта для использования", сосредоточившись сначала на обсуждении свойств, методов и событий. А пока что примите на веру, что объект можно вызвать по его имени.
Как вам стало очевидным из раздела "Что такое объектная модель", каждое VBA приложение имеет свою неповторимую объектную модель (иерархию объектов), а каждый из его объектов имеет свой собственный набор свойств, методов и событий. Чтобы заставить эти объекты работать в программе, вам необходимо хорошо разобраться в деталях объектной модели соответствующего приложения.
Во многих приложениях справка о VBA содержит специальный раздел, в котором вы найдете графическое представление объектной модели этого приложения (рис. 12.4). Если диаграмма объектной модели не появилась перед вами при первом же вызове справки, перейдите в окне справки на вкладку Содержание, где она будет представлена под рубрикой типа Microsoft Excel Objects.
Используя диаграмму объектной модели в качестве гида, вы сможете открыть информацию о конкретном объекте, дважды щелкнув на его имени в диафамме. Иначе получить нужную информацию можно, отыскав в указателе справки соответствующий раздел и открыв его. Как правило, в любом разделе, посвященном объекту, имеются ссылки на другие разделы, содержащие дополнительную информацию о свойствах, методах и событиях соответствующего объекта. (Заметьте, здесь идет речь о справке о VBA для соответствующего приложения, а не об общей справке о приложении или VBA. О работе со справочной системой VBA см. главу 4.)
Рис. 12.4. Объектная модель Excel
Другим жизненно важным средством для изучения свойств, методов и событий объектов и их взаимосвязей в приложении является обозреватель объектов в редакторе Visual Basic.
Полное описание обозревателя объектов см. в главе 6.
Выяснение и установка свойств объектов
Вероятно, свойства - это самые простые для понимания характеристики объекта. Каждое свойство хранит информацию о некотором аспекте внешнего вида, поведения, содержимого объекта или, если хотите, о его генеалогии.
Например, объект Document может иметь свойство Pages, говорящее о числе страниц в документе. Объект Shape может иметь свойство Fill, задающее цвет графического элемента. Объекты CornmandButton (представляющие кнопки в диалоговых окнах) имеют свойство Caption, задающее текст, появляющийся на кнопке.