Этот способ обращения к объектам называется «Раннее» и «Позднее связывание». Из MSDN :
Компилятор Visual Basic выполняет процесс, называемый связыванием, когда объект назначается переменной объекта.
Объект рано связывается, когда онприсваивается переменной, объявленной как объект определенного типа.Объекты с ранней привязкой позволяют компилятору выделять память и выполнять другие оптимизации перед выполнением приложения.
В отличие от этого, объект с поздней привязкой присваивается переменной, объявленной как тип Object.Объекты этого типа могут содержать ссылки на любой объект, но лишены многих преимуществ объектов с ранней привязкой.
Вы должны использовать объекты с ранней привязкой, когда это возможно, потому что они позволяют компилятору выполнять важные оптимизации, которые приводят кболее эффективные приложения.Объекты с ранней привязкой значительно быстрее, чем объекты с поздней привязкой, и облегчают чтение и поддержку вашего кода, точно указав, какой тип объектов используется.
TL DR:
Разница в том, что при раннем связывании вы получаете intellisense и бонус времени компиляции, но вы должны убедиться, что добавили соответствующую библиотеку.
- Пример использования позднего связывания :
Сначала убедитесь, что вы добавили библиотеку объектов MS Excel 16.0 из VBE> Доп. Функции> Библиотеки:
Sub MyLateBinding()
Dim objExcelApp As Object
Dim strName As String
'Definition of variables and assigning object:
strName = "somename"
Set objExcelApp = GetObject(, "Excel.Application")
'A Is Nothing check:
If objExcelApp Is Nothing Then Set objExcelApp = CreateObject("Excel.Application")
'Doing something with the Excel Object
objExcelApp.Caption = strName
MsgBox strName
End Sub
- Пример использования раннего связывания :
Sub MyEarlyBinding()
Dim objExcelApp As New Excel.Application
Dim strName As String
'Definition of variables and assigning object:
strName = "somename"
'A IsNothing check:
If objExcelApp Is Nothing Then Set objExcelApp = CreateObject("Excel.Application")
'Doing something with the Excel Object
objExcelApp.Caption = strName
MsgBox strName
End Sub
Статьи по теме: