Об'єктна модель в VBA

Колекції, контейнери та об'єктна модель в VBA. Урок №41

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

Наприклад, 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