Funktionreferenz


ObjGet

Beschreibung anzeigen in

Ruft eine Referenz zu einem COM-Objekt ab, von einem vorhandenem Prozess oder Dateinamen.

ObjGet ( "filename" [, "classname" [, instance]] )

Parameter

filename Vollständiger Pfad und Name der Datei die das Objekt enthält (Siehe Bemerkungen)
classname [optional] Klassen Bezeichnung. Kann entweder eine ProgID oder die String Darstellung der CLSID sein
instance [optional] Instanz vom Objekt für ROT-Objekte derselben (Co-)Klasse

Rückgabewert

Erfolg: Ein Objekt.
Fehler: Setzt das @error Flag auf ungleich null.

Bemerkungen

Der Dateiname ist optional wenn man nur den Klassennamen nutzen möchte, aber der Parameter darf nicht ausgelassen werden.
Verwende einen leerer String, wenn man auf Objekte aus 'running object table'(ROT) zugreifen will. In diesem Fall gibt der dritte Parameter die gewünschte Instanz an.
Ansonsten wird der dritte Parameter ignoriert.

Wenn ein Dateiname benutzt wird, ist der Klassenname optional. Er wird nur benötigt wenn man ein Objekt einer bestimmten Klasse laden möchte.
Der Parameter classname hat keinen Standardwert. Wird er angegeben, so wird er verarbeitet.

Siehe die Obj/COM Referenz für mehr Informationen über Objekte.

Verwandte Funktionen

GUICtrlCreateObj, IsObj, ObjCreate, ObjEvent, ObjName

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>

; Beispiel wie man eine Objektreferenz über den Klassennamen erhält
; Excel muss gestartet sein, damit das Beispiel funktioniert

Example()

Func Example()
    Local $oExcel = ObjGet("", "Excel.Application") ; Existierendes Excelobjekt referenzieren

    If @error Then
        MsgBox($MB_SYSTEMMODAL, "", "ExcelTest" & @CRLF & "Fehler beim Referenzieren eines bestehenden Excelobjekts. Fehlernummer: " & Hex(@error, 8))
        Return False
    EndIf

    $oExcel.Visible = 1 ; Das Objekt anzeigen
    $oExcel.workbooks.add ; Eine neue Arbeitsmappe hinzufügen
EndFunc   ;==>Example

Beispiel 2

; wie man eine Objektreferenz über den Dateinamen erhält
; Eine Excel Datei mit dem Namen Worksheet.xls muss im Skripverzeichnis vorhanden sein, damit das Beispiel funktioniert.

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $sFileName = @ScriptDir & "\Worksheet.xls"

    If Not FileExists($sFileName) Then
        MsgBox($MB_SYSTEMMODAL, "", "Excel Datei Test" & @CRLF & "Test kann nicht ausgeführt werden, weil diese Exeldatei nicht existiert: " & $sFileName)
        Return False
    EndIf

    Local $oExcelDoc = ObjGet($sFileName) ; Die Excelobjektreferenz mit dem Dateinamen erzeugen

    If IsObj($oExcelDoc) Then

        ; Tipp: Folgende Zeilen entkommentieren um Excel sichtbar zu machen (credit: DaleHohm)
        ; $oExcelDoc.Windows(1).Visible = 1  ; Das erste Arbeitsblatt in der Arbeitsmappe sichtbar machen
        ; $oExcelDoc.Application.Visible = 1 ; Die Anwendung anzeigen (ohne dies wird Excel beendet)

        Local $sString = "" ; String für Anzeigezwecke

        For $oProperty In $oExcelDoc.BuiltinDocumentProperties
            $sString &= $oProperty.Name & ":" & $oProperty.Value & @CRLF
        Next

        MsgBox($MB_SYSTEMMODAL, "", "Excel Datei Test" & @CRLF & "Die Dokumenteneigenschaften von " & $sFileName & " sind:" & @CRLF & @CRLF & $sString)

        $oExcelDoc.Close ; Exceldokument schließen

    Else
        MsgBox($MB_SYSTEMMODAL, "", "Excel Datei Test" & @CRLF & "Fehler: Die Datei " & $sFileName & " konnte nicht als Excelobjekt geöffnet werden.")
    EndIf
EndFunc   ;==>Example