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(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([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.