Тема: Инициализация объектов в VBA
Тренер и преподаватель по программированию Т. Батыршинов в своем известном курсе по Java хорошо проанализировал процедуру инициализации объекта. Я попробовал применить этот же подход к объяснению процесса инициализации объектов в VBA.
Также был использован учебный материал по VBA, разработанный Академией специальных курсов по информационным технологиям («AskIT») (внешняя ссылка).
В VBA имеются три способа инициализации объекта:
1) Позднее связывание.
2) Раннее связывание.
3) Раннее связывание с использованием оператора New.
Рассмотрим подробнее как это делается и что при этом происходит в компьютере.
1. Позднее связывание:
Dim oApp As Object
Set oApp = CreateObject ("Word.Application")
MsgBox oApp.UserName
В этом случае в компьютере последовательно выполняются следующие действия:
1) Создалась переменная oApp типа Object.
2) В памяти создался объект типа Word.Application.
3) Присвоили переменной oApp созданный объект.
4) После этого переменная oApp ссылается на созданный объект Word.Application.
При отсутствии второй строки выводится сообщение «Объект не установлен (не привязан)».
2) Раннее связывание:
Dim oApp As Word.Application
Set oApp = CreateObject("Word.Application")
MsgBox oApp.UserName
В этом случае в компьютере последовательно выполняются следующие действия:
1) Создалась переменная oApp типа Word.Application.
2) В памяти создался объект типа Word.Application.
3) Присвоили переменной oApp созданный объект.
4) После этого переменная oApp ссылается на созданный объект Word.Application.
При отсутствии второй строки выводится сообщение «Объект не установлен (не привязан)».
3) Раннее связывание с использованием оператора New:
Dim oApp As New Word.Application
MsgBox oApp.UserName
В этом случае в компьютере также последовательно выполняются аналогичные действия.
1) Создалась переменная oApp типа Word.Application.
2) В памяти создался объект типа Word.Application.
3) Присвоили переменной oApp созданный объект.
4) После этого переменная oApp ссылается на созданный объект Word.Application.
В прилагаемом файле описываемая проблема рассмотрена более подробно и с иллюстрациями. В файле используются схемы, идея которых была предложена Т. Батыршиновым.
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.