IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

pilotage ole Word 2


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut pilotage ole Word 2
    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:

    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;
    Si Word n'a pas déjà été lancé, le message suivant apparaît :

    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

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Et si tu lances ton exe directement sans passer par l'EDI, qu'est-ce que ça donne ?

    @+

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Le message d'erreur de "projet1 etc.." apparait il quand tu exécutes l'application hors delphi ?
    Car au vu de tes dire le message est normal vu que c'est le déboggueur qui l'affiche.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 469
    Points : 24 905
    Points
    24 905
    Par défaut
    D2007 : Outils > Options > Options du débogueur | décoche Notification des exceptions du débogueur

    En D7, le chemin est plus court, globalement le même mais la case à cocher c'est "Arrêter sur Exceptions Delphi !"

    Avec le Journal d'Evèmenent, c'est que l'on voit avec la mention "Exception 1ere Chance"

    Un grand classique !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    S'il existe une instance de Word déjà active :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSWord := GetActiveOleObject('Word.Application');
    Par contre si Word n'est pas lancé, peut-être faut-il créer une instance avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSWord := CreateOleObject('Word.Application');
    D'où un code qui ressemblerait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try
        vMSWord := GetActiveOleObject('Word.Application');
    except
        vMSWord := CreateOleObject('Word.Application');
    end;
    Une aide dans la section Excel de la à adapter pour Word
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses car elles m'ont éclairé.

    Effectivement, le message n'apparaît qu'en mode debug. En exécution directe, le message n'apparaît pas.

    Et comme le souligne ShaiLeTroll, et afin de résumer pour tout nouveau débutant rencontrant ce problème :

    Delphi 2007 : Outils > Options > Options du débogueur | décoche Notification des exceptions du débogueur

    En Delphi 7, le chemin est plus court, globalement le même mais la case à cocher c'est "Arrêter sur Exceptions Delphi !"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WORD] pilotage ole Delphi
    Par missmarion dans le forum API, COM et SDKs
    Réponses: 19
    Dernier message: 28/09/2010, 11h19
  2. Pilotage OLE WORD : masquer message de Word
    Par sat83 dans le forum C++Builder
    Réponses: 3
    Dernier message: 13/08/2009, 16h48
  3. Pilotage OLE WORD - Remplacer des termes-
    Par bru-no dans le forum C++Builder
    Réponses: 10
    Dernier message: 19/03/2007, 22h51
  4. Pilotage OLE Word avec Visual C++
    Par baka02 dans le forum MFC
    Réponses: 2
    Dernier message: 20/03/2006, 13h04
  5. Pilotage Ole de word
    Par beauchastel dans le forum Langage
    Réponses: 6
    Dernier message: 10/01/2006, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo