Je reviens sur un post de 2006 -- puisque j'ai le même problème -- et qu'aucune solution n'a été indiquée.
Bonjour à tous
Je développe une application en delphi 6 dans laquelle j'ai besoin d'ouvrir word, mais sans qu'il y ait besoin d'ouvrir une deuxième instance Word.
Le problème c'est que ce code pour créer une instance pose un problème:
et je reprends ici le code fourni par Laurent Dardenne:
Si Word n'a pas déjà été lancé, le message suivant apparaît :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 var WordApplication:Variant; AppExist :Boolean; Visible: OleVariant; FileName: OleVariant; Begin AppExist:=True; Try WordApplication:=GetActiveOleObject('Word.Application'); // Ou Outlook.Application except on EOleSysError do AppExist:=False; end; if AppExist then begin ShowMessage('Word est en cours d''exécution.'); Visible:=True; FileName:='Test1.Doc'; WordApplication.Documents.Add(EmptyParam,EmptyParam,EmptyParam,Visible); end else ShowMessage('Word n''est pas en cours d''exécution.'); end;
Le projet Project1.exe a provoqué une classe d'exception EOleSysError avec le message 'Opération non disponible'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
En faisant 'Exécuter', le message 'Word n'est pas en cours d'exécuiton' apparaît bien, au final (mais il y a eu le message d'erreur).
En revanche, si Word a déjà été lancé, tout est correct (Word est un cours d'exécution).
Le plantage se fait au niveau du GetActiveOleObject('Word.Application'), et ce n'est donc qu'après le message d'erreur 'Opération non disponible' que le traitement d'exception s'effectue.
Normalement, cette anomalie devrait être gérée automatiquement par le traitement d'exception.
Quelqu'un aurait-il une idée sur ce problème ?
Merci
Partager