Если вы хотите использовать функции других приложений, вам нужно решить, хотите ли вы использовать раннее или позднее связывание объектных переменных.

Раннее связывание

Связывание между объектной переменной и объектом происходит при компиляции приложения.

Это приводит к повышению производительности по сравнению с тем, когда привязка выполняется при запуске приложения (поздняя привязка).

Если вы хотите создать раннюю привязку, вам нужно установить ссылку на «чужую» библиотеку объектов, которую вы хотите использовать.

Это делается из VBE с помощью меню Инструменты, Ссылки …​. Когда VBProject имеет ссылку на библиотеку объектов, вы можете объявить определенные переменные объекта (например, Dim oDoc As Word.Document). Это также упростит программирование «посторонних объектов», поскольку VBE будет отображать ту же справку по программированию в отношении свойств, методов и событий, которые он отображает для объектов, принадлежащих приложению, с которым вы работаете (VBE автоматически добавил ссылку на это приложение заранее).

Это общий пример кода, показывающий ошибку автоматизации vba:

Sub OLEAutomationEarlyBinding()

' replace xxx with one of the following:

' Access, Excel, Outlook, PowerPoint or Word

Dim oApp As xxx.Application ' early binding

Dim oDoc As xxx.Document

' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation, Word.Document

On Error Resume Next ' ignore errors

Set oApp = GetObject(, "xxx.Application")

' reference an existing application instance

If oApp Is Nothing Then ' no existing application is running

Set oApp = New xxx.Application ' create a new application instance

End If

On Error GoTo 0 ' resume normal error handling

If oApp Is Nothing Then ' not able to create the application

MsgBox "The application is not available!", vbExclamation

End If

With oApp

.Visible = True ' make the application object visible

' at this point the application is visible

' do something depending on the application...

Set oDoc = .Documents.Open("c:\foldername\filename.doc")

' open a document

'        ...

oDoc.Close True ' close and save the document

.Quit ' close the application

End With

Set oDoc = Nothing ' free memory

Set oApp = Nothing ' free memory

End Sub

Поздняя привязка

Связывание между объектной переменной и объектом происходит при запуске приложения.

Это приводит к снижению производительности по сравнению с тем, когда происходит привязка при компиляции приложения (раннее связывание).

Если вы не добавляете ссылку на библиотеку объектов, принадлежащую «чужому» приложению, вам необходимо объявить общие объектные переменные (например, Dim oDoc As Object). Это затруднит программирование «посторонних объектов», поскольку VBE не будет отображать ту же справку по программированию в отношении свойств, методов и событий, которые он отображает для объектов, принадлежащих приложению, с которым вы работаете.

Это общий пример кода:

Sub OLEAutomationLateBinding()

' replace xxx with one of the following:

' Access, Excel, Outlook, PowerPoint or Word

Dim oApp As Object ' late binding

Dim oDoc As Object ' late binding

On Error Resume Next ' ignore errors

Set oApp = GetObject(, "xxx.Application")

' reference an existing application instance

If oApp Is Nothing Then ' no existing application is running

Set oApp = CreateObject("xxx.Application")

' create a new application instance

End If

On Error GoTo 0 ' resume normal error handling

If oApp Is Nothing Then ' not able to create the application

MsgBox "The application is not available!", vbExclamation

End If

With oApp

.Visible = True ' make the application object visible

' at this point the application is visible

' do something depending on the application...

Set oDoc = .Documents.Open("c:\foldername\filename.doc")

' open a document

'        ...

oDoc.Close True ' close and save the document

.Quit ' close the application

End With

Set oDoc = Nothing ' free memory

Set oApp = Nothing ' free memory

End Sub