![]() |
GetActiveOleObject Fehler in der log-Datei
Hallo,
wenn in der Log-Datei wegen dieser Zeile Code GetActiveOleObject('Word.Application'); ein Fehler dokumentiert wird. Es beim Compilieren aber kein Fehler gab. Woran kann das liegen? Exception EOleSysError occured in ... Call stack: Fehler in Zeile 1201 |
AW: GetActiveOleObject Fehler in der log-Datei
Beim Compilieren wird nicht geprüft, ob Word existiert/installiert ist. Zu dem Zeitpunkt ist das nur irgendein String. Da kann auch "Hallo Welt" stehen.
|
AW: GetActiveOleObject Fehler in der log-Datei
Bei mir ist Word installiert. Also kann das nicht der Fehler sein.
|
AW: GetActiveOleObject Fehler in der log-Datei
Ich bekomme glaube ich den Fehler, weil bei mir keine Word Instanz läuft?
Wie kann ich überprüfen, ob eine Instanz von Word läuft? |
AW: GetActiveOleObject Fehler in der log-Datei
Zitat:
Wenn's nicht läuft, gibt es diesen Fehler. Bei diesem Fehler musst Du Word dann halt starten -> CreateOleObject('Word.Application') Es wäre schön, wenn Du uns auch den Quelltext dazu zeigen könntest, dann kann man eventuell erkennen, wo die Fehlerursache liegt. ![]() |
AW: GetActiveOleObject Fehler in der log-Datei
Zitat:
Mit diesem Code kann ich überprüfen, ob eine Word Datei bereits läuft?
Code:
function GetWord: IDispatch;
var ClassID: TGUID; Unknown: IUnknown; HR: HResult; begin ClassID := ProgIDToClassID('Word.Application'); HR := GetActiveObject(ClassID, nil, Unknown); if (HR = MK_E_UNAVAILABLE) then Result := CreateComObject(ClassID) as IDispatch else begin OleCheck(HR); OleCheck(Unknown.QueryInterface(IDispatch, Result)); end; end; |
AW: GetActiveOleObject Fehler in der log-Datei
Zitat:
Worddok := GetActiveOleObject('Word.Application'); In dem Link, den du mir geschickt hast, wird auch GetActiveObject verwendet. Dieser Befehl führte doch zu der Exception. Deswegen hilft mir das auch nicht weiter? |
AW: GetActiveOleObject Fehler in der log-Datei
Hmm..
Dir ist schon bekannt, das dir GetActiveOleObject('Word.Application') ein IDispatch interface einer 'laufenden' Word-Anwendung zurück gibt? Somit musst Du erst Word starten, damit das funktioniert. Wenn kein Word läuft, dann bekommst du die Exception! Willst Du hingegen Word 'starten' und dann per OLE verwenden, dann ist ein CreateOleObject('Word.Application') notwendig! |
AW: GetActiveOleObject Fehler in der log-Datei
In dem Link, den ich Dir geschickt habe, steht zuerst ein Get...
Und wenn das scheitert, fliegt eine Exception, das heißt, es läuft noch kein Word. Und in der Exceptionbehandlung wird dann mit Create... eine Wordinstanz erstellt. Von daher hilft es Dir durchaus. Oder: Das ist Die Lösung wie man es für gewöhnlich macht. Wenn Du möchtest, kannst Du das CreateOleObject noch in einen eigenen Exceptionblock packen, damit Du dort, wenn ein Fehler auftritt (der dann bedeutet, es ist kein Word installiert), auch auf diese Situation reagieren kannst. Grob so:
Delphi-Quellcode:
Try
Get ...; Except try Create ...; Except MessageDlg(Format('Es ist kein ... installiert.%s%s',[#13#13,e.Message]),mtError,[mbOk],0); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz