Generelle Objekte
Generelle Objekte haben selbst keine Methoden und keine Eigenschaften, sie können jedoch eine beliebiges Anwendungs- bzw. Klassenobjekt entgegennehmen und dessen Eigenschaften und Methoden aufnehmen. Dim objApp As Object Set objApp = Application Debug.Print objApp.Name Das generelle Objekt objApp hat keine eigenen Eigenschaften, aber durch die Zuweisung der Anwendung kann die Eigenschaft 'Name' abgerufen werden. Hierfür wird jedoch vom VBA-Editor keine Hilfe angeboten, weil aus seiner Sicht das Objekt keine eigenen Eigenschaften hat.
Late Binding
Generelle Objekte dienen vorrangig dazu, eine späte Bindung zu ermöglichen (Late Binding). Dies kann in folgenden Situationen sehr hilfreich sein:
Beispiel: Mehr-Anwendungen-Fähigkeit
Sie haben eine Lösung entwickelt, welche in mehreren Office-Anwendungen zur Verfügung stehen soll. Diese Lösung bezieht sich auf die aktuelle Datei. Da die aktuelle Datei in Word ein Dokument, in Excel eine Arbeitsmappe und in PowerPoint eine Präsentation ist, müssen Sie auf alle drei Anwendungen getrennt eingehen oder je nach Anwendung die nicht zutreffenden Schritte in Kommentar setzen. Public Function ActiveFileFullName() As String Dim objApp As Object ' Application Dim objFile As Object ' Workbook Set objApp = Application Select Case Application.Name Case "Microsoft Excel" Set objFile = objApp.ActiveWorkbook Case "Microsoft PowerPoint" Set objFile = objApp.ActivePresentation Case "Microsoft Word" Set objFile = objApp.ActiveDocument End Select ActiveFileFullName = objFile.FullName End Function Während diese Funktion aufgebaut wurde, hat der Entwickler die Application
und das Workbook
als solche definiert und konnte direkt auf die gewünschten Eigenschaften zugreifen. Dann wurden die beiden Variablen zu Objekten erklärt und ermöglichen so auch in den anderen Anwendungen den Zugriff auf die aktuelle Datei. Hierbei werden, obwohl zum Beispiel die Excel Application
keine ActivePresentation
und kein ActiveDocument
kennt, keine Kompilierungsfehler auftreten, weil erst beim direkten Aufruf des Objekts geprüft wird, ob diese Eigenschaft zur Verfügung steht. Durch die Select
Abfrage wird gesteuert, welche Anwendung auf welches aktuelle Element zugreift.