Wenn Sie Funktionen aus anderen Anwendungen verwenden möchten, müssen Sie entscheiden, ob Sie die frühe oder späte Bindung von Objektvariablen verwenden möchten.

Frühe Bindung

Die Bindung zwischen der Objektvariablen und dem Objekt erfolgt beim Kompilieren der Anwendung.

Dies führt zu einer besseren Leistung im Vergleich zu dem Zeitpunkt, an dem die Bindung beim Ausführen der Anwendung erfolgt (späte Bindung).

Wenn Sie eine frühe Bindung erstellen möchten, müssen Sie einen Verweis auf die „fremde“ Objektbibliothek festlegen, die Sie verwenden möchten.

Dies erfolgt über die VBE über das Menü Extras, Referenzen …​. Wenn ein VBProject einen Verweis auf eine Objektbibliothek hat, können Sie bestimmte Objektvariablen deklarieren (z. B. Dim oDoc As Word.Document). Dies erleichtert auch das Programmieren der „Fremdobjekte“, da die VBE dieselbe Programmierhilfe in Bezug auf Eigenschaften, Methoden und Ereignisse anzeigt, die sie für die Objekte anzeigt, die zu der Anwendung gehören, mit der Sie arbeiten (die VBE hat die automatisch hinzugefügt Verweis auf diesen Antrag im Voraus).

Dies ist ein allgemeines Codebeispiel, das einen vba-Automatisierungsfehler zeigt:

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

Späte Bindung

Die Bindung zwischen der Objektvariablen und dem Objekt erfolgt beim Ausführen der Anwendung.

Dies führt zu einer langsameren Leistung im Vergleich zum Zeitpunkt der Bindung beim Kompilieren der Anwendung (frühe Bindung).

Wenn Sie keinen Verweis auf die Objektbibliothek hinzufügen, die zur „fremden“ Anwendung gehört, müssen Sie allgemeine Objektvariablen deklarieren (z. B. Dim oDoc As Object). Dies erschwert das Programmieren der „Fremdobjekte“, da die VBE nicht dieselbe Programmierhilfe in Bezug auf Eigenschaften, Methoden und Ereignisse anzeigt, die sie für die Objekte anzeigt, die zu der Anwendung gehören, mit der Sie arbeiten.

Dies ist ein allgemeines Codebeispiel:

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