Ruft eine Referenz zu einem COM-Objekt ab, von einem vorhandenem Prozess oder Dateinamen.
ObjGet ( "filename" [, "classname" [, instance]] )
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 |
Erfolg: | Ein Objekt. |
Fehler: | Setzt das @error Flag auf ungleich null. |
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.
GUICtrlCreateObj, IsObj, ObjCreate, ObjEvent, ObjName
#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
; 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