Objektspezifische Funktionen

CallByName

CallByName(Object As Object, ProcName As String, CallType As VbCallType, Args() As Variant) As Variant

Zugriff auf eine Methode oder Eigenschaft eines Objekts, wobei der Methoden- bzw. Eigenschaftenname als String übergeben wird.

Das folgende Beispiel setzt eine selbstgeschriebene Klasse namens Auto mit einer Eigenschaft namens Geschwindigkeit voraus, wie sie im Tutorial erstellt wurde: Erst wird versucht, eine Geschwindigkeit einzustellen, und dann die eingestellte Geschwindigkeit ausgegeben. Die Eigenschaft wird dabei als String übergeben.

Sub Tempo()
Dim car As New Auto
CallByName car, "Geschwindigkeit", VbLet, 300
Debug.Print CallByName(car, "Geschwindigkeit", VbGet)
End Sub

CreateObject

CreateObject(Class As String, [ServerName As String]) As Object

Startet das Class entsprechende Programm (falls es schon läuft, eine weitere Instanz des Programms) oder ActiveX-Objekt. Gibt ein entsprechendes Objekt zurück. Es wird also Zugriff auf eine Objektbiliothek ermöglicht, ohne sie einzubinden (sogenanntes „Late Binding“)

Class ist ein String, der sich aus dem Namen des Programms, gefolgt von einem Punkt, und einer Klasse aus dem Programm zusammensetzt. Die hier aufgeführte Übersicht führt einige wichtige Klassen auf, ist aber bei weitem nicht vollständig, da die Klassen von den installierten Applikationen abhängen. Anstelle einer Klasse kann auch auf eine existierende Datei verwiesen werden, die damit geöffnet wird.

Das zurückgegebene Objekt kann in einer allgemeinen Objektvariablen gespeichert werden. Auf das Programm muss kein Verweis in der Objektbibliothek gesetzt sein. Wenn es nicht mehr benötigt wird, sollte der Wert auf Nothing gesetzt werden, um den Speicherplatz wieder freizugeben.

Sub createApp()
'Dim App As New Word.Application
Dim App As Object

Set App = CreateObject("Word.Application")

App.Visible = True
App.Documents.Add
App.Documents(1).Content.InsertAfter "Hallo Word!"

Set App = Nothing
End Sub

Sub
createDoc() 'Dim Doc As Word.Document Dim Doc As Object Set Doc = CreateObject("D:\MeinDokument.doc") Doc.Application.Visible = True Doc.Content.InsertAfter "Hallo Word!" Set Doc = Nothing End Sub

Die beiden obigen Prozeduren sind dafür gedacht, von einer anderen Anwendung aus auf Microsoft Word zuzugreifen. In ihnen befinden sich jeweils zwei gleichwertige Variablendeklarationen, von denen je eine auskommentiert ist. Sofern die Word-Objektbibliothek eingebunden ist, kann auch diese Deklaration verwendet werden. createApp erzeugt eine neue Instanz von Word, erstellt dort ein neues Dokument und schreibt etwas hinein. In createDoc gibt CreateObject dagegen ein existierendes Dokument zurück.

In einem Netzwerk kann mit dem Argument ServerName noch der Name eines Servers angegeben werden, auf dem das Objekt erstellt wird.

GetObject

GetObject([PathName As Variant], [Class As Variant]) As Object

Verweist auf ein bestehendes ActiveX-Objekt. PathName ist der vollständige Pfad und Dateiname des Objekts. Wenn er fehlt, muss Class angegeben sein.

Wird mit PathName eine Datei angegeben, wird sie gestartet. Falls die Datei schon geöffnet ist, passiert nichts.