Объектная модель VBA

Коллекции, контейнеры и объектная модель в VBA. Урок №41

Коллекция (collection) – это VBA-объект специального назначения, который предоставляет доступ к массиву из объектов. То есть это целый набор объектов, которые могут использоваться как некое единое целое. Каждый объект в такой коллекции называется элементом (element) этой коллекции.

Например, приложение Excel это объект, который называется Application. В него входит коллекция Workbooks (рабочие книги). В этой коллекции хранятся объекты Workbook (рабочая книга) для всех открытых книг. В свою очередь, каждый объект Workbook содержит коллекцию Worksheets (рабочие листы). А в коллекции Worksheets хранятся объекты Worksheet (рабочий лист) для рабочих листов этой книги.

В большинстве случаев, все объекты в коллекции имеют один и тот же тип. Но бывают и такие коллекции, которые хранят объекты любых типов. Например, коллекция Documents включает в себя несколько объектов класса Document. А вот родовой объект Collection предназначен для хранения в нем объектов любых типов в любой комбинации.

Свойства и методы коллекции

Поскольку коллекция сама по себе тоже является объектом, то она может иметь собственные методы и свойства.

Например, для того чтобы получить доступ к определённому объекту коллекции можно использовать метод Item.

Пример метода Item

Допустим у нас есть книга с двумя листами. Первый лист назовём "VBA", а второй – "PHP". Чтобы обратиться к объекту второго листа и получить его имя, можно использовать следующий код:

Sub myCode()
    MsgBox ("Аркуш 2 має назву" + " " + Worksheets.Item(2).Name)
End Sub

Здесь мы обращаемся к объекту по его номеру Worksheets.Item(2).

Обратиться к объекту листа рабочей книги можно и по его имени.

Sub myCode()
Dim n As Integer
    MsgBox ("Аркуш PHP має номер" + " " & Worksheets.Item("PHP").Index)
End Sub

Контейнеры и объектная модель

Объекты VBA иерархически зависимы. Другими словами, объекты более высокого уровня являются контейнерами для объектов более низкого уровня.

Контейнер в VBA – это любой объект, который содержит в себе один, или множество других вложенных в него объектов. Вложенные объекты, в свою очередь могут содержать другие объекты и т.д.

Вся система таких иерархических связей конкретного приложения в VBA называется объектной моделью этого приложения.

Ниже представлен фрагмент объектной модели приложения Microsoft Excel.

Объектная модель в VBA

Рисунок. Объектная модель Excel

На самом верхнем уровне иерархии объектной модели Excel находится объект Application (Приложение). Это главный (корневой) объект Microsoft Excel. На следующем уровне иерархии объектной модели находится коллекция Workbooks (Рабочие книги), в которой каждый объект Workbook соответствует одной открытой рабочей книге.

В свою очередь, каждый объект Workbook содержит объекты более низкого уровня, в частности коллекцию Worksheets (Рабочие листы). Эта коллекция включает в себя по одному объекту Worksheet для каждого рабочего листа данной рабочей книги.

Объект Worksheet, в свою очередь, состоит из других объектов и т.д.

Для доступа к свойствам вложенных объектов используется стандартный синтаксис, при котором имена объектов (в том числе и коллекций) соединяются с помощью точки.

Например, чтобы получить доступ к свойству Count коллекции Worksheets можно использовать следующее выражение:

Application.Workbooks.Worksheets.Count

Таким образом мы получаем единое выражение для использования при написании программы.

Main Menu