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

API, COM et SDKs Delphi Discussion :

TOLEContainer avec Word 2016 depuis Windows 10


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 28
    Par défaut TOLEContainer avec Word 2016 depuis Windows 10
    Bonjour

    Je développe avec Delphi Xe4 et Delphi 10.2

    Dernièrement, une mise à jour d'office 365 sur les OS Windows 10 provoque une erreur lors de la manipulation des objets OLE de Word...
    Message d'erreur "Interface not supported"

    Voici un code d'exemple pour vous montrer comment je provoque cela :

    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
     
    implementation
    uses WordXP;
     
    {$R *.dfm}
     
    procedure TForm5.Button1Click(Sender: TObject);
    var
      Doc : WordDocument;
      rng : WordRange;
      _Start, _End : OleVariant;
    begin
      OleContainer.CreateObject('Word.Document', False);
      OleContainer.DoVerb(ovShow);
      if Assigned(OleContainer.OleObjectInterface) then
      begin
        doc := OleContainer.OleObjectInterface as _Document; { <== Ligne qui provoque le message d'erreur }
        _Start := 0;
        _End := doc.Characters.Count;
        rng := Doc.Range(_Start, _End);
        rng.Text := 'Salut !';
      end;
    end;
    Je n'ai pas le souci sur des systèmes autre que Windows 10.

    Le but du jeu, est d'ouvrir une instance du Word (quelque soit la version) installé sur la machine, de l'afficher dans une fenêtre de mon application, d'y mettre du texte déjà conçu et de récupérer le texte final modifié par l'utilisateur...
    J'utilise Word pour permettre à l'utilisateur de garder ses outils standards d'édition de textes et de lui permettre la vérifications de l’orthographe.

    Quelque'un aurait-il eu le même souci ?
    Et y a t-il une solution alternative pour contrer ce souci ?

    Merci beaucoup pour votre aide.

  2. #2
    Membre averti
    Inscrit en
    Avril 2002
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 28
    Par défaut
    Bonjour

    Personne n'a eu ce même phénomène ?

    Quelqu'un aurait une idée pour contourner ce souci ?

    Merci.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 5
    Par défaut
    Bonjour,

    J'ai un problème similaire chez un client depuis cette semaine...
    Je suis sous Delphi 210 (...oui je sais )

    Pour moi c'est au niveau de la fusion word, avant de lancer une fusion, j'ouvre le modele de document pour vérifier la liste des champs de fusion présents dans le documents (l'interface suivante s'affichant différemment selon le contenu...)
    Bref, bizarrement, cela a pour effet de lancer 2 processus word au lieu d'un seul et l'appli plante, attendant un retour de word j'imagine...

    Mais je n'ai pas trouvé la solution.
    J'ai regardé du coté de NormalTemplate, sans succès...

    Moi ça plante à ce niveau
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class procedure TFusion.setTemplateFields(ATemplateFile: string; var ATemplateFields : TStringList);
    var
      Word: TWordApplication;
      Doc: WordDocument;
      FileName: OleVariant;
      I,A,B: Integer;
      S: string;
    begin
    //  DMMain.AddLogFile(DMMain.logFile, ' setTemplateFields - Début '+ATemplateFile);
      Word:=TWordApplication.Create(nil);
      Word.ConnectKind:=ckNewInstance;
      Word.AutoQuit:=False;
      Word.Connect;
      Word.Visible:=True;
    //  DMMain.AddLogFile(DMMain.logFile, ' - Connexion WORD => OK '+ATemplateFile);
     
      FileName:=ATemplateFile;
      Doc:=Word.Documents.Open(FileName,EmptyParam,TrueOleVar,EmptyParam,
          EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
          FalseOleVar,EmptyParam,EmptyParam,EmptyParam);
    //  DMMain.AddLogFile(DMMain.logFile, ' - Ouverture modèle => OK '+ATemplateFile);
      for I:=1 to Doc.MailMerge.Fields.Count do
      begin
        S:=Trim(Doc.MailMerge.Fields.Item(I).Code.Text);
        A:=Pos(' ',S);
        while S[A]=' ' do
          A:=A+1;
        B:=PosEx(' ',S,A);
        if B=0 then
          B:=Length(S)+1;
        ATemplateFields.Add(StringReplace(Copy(S,A,B-A),'"','',[rfReplaceAll]));
      end;
    //  DMMain.AddLogFile(DMMain.logFile, ' - Remplissage du template liste des champs de fusion => OK '+ATemplateFile);
     
      Word.NormalTemplate.Saved:=False;
    //  DMMain.AddLogFile(DMMain.logFile, ' - Word.NormalTemplate.Saved => OK '+ATemplateFile);
      Word.Quit;
    //  DMMain.AddLogFile(DMMain.logFile, ' - Word.Quit; => OK '+ATemplateFile);
      Word.Free;
    //  DMMain.AddLogFile(DMMain.logFile, ' - Word.Free; => OK '+ATemplateFile);
    //  DMMain.AddLogFile(DMMain.logFile, ' - setTemplateFields Fin => OK '+ATemplateFile);
    end;
    Tous mes fichiers de logs s'affichent, mais ça ne sort pas de la fonction !??
    Si quelqu'un a une idée?

    Pili

Discussions similaires

  1. [WD-2016] Problème de pagination avec Word 2016
    Par Heraxia dans le forum Word
    Réponses: 1
    Dernier message: 23/10/2016, 21h02
  2. [WD-2016] Comment entourer une lettre avec word 2016
    Par patboy1974 dans le forum Word
    Réponses: 1
    Dernier message: 14/09/2016, 10h25
  3. Réponses: 0
    Dernier message: 18/02/2016, 21h38
  4. Réponses: 6
    Dernier message: 05/02/2011, 11h35
  5. Macro Word avec paramètre lancée depuis Excel
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 1
    Dernier message: 07/10/2007, 18h50

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