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

Lazarus Pascal Discussion :

Création de document MSWord au format DOCX [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut Création de document MSWord au format DOCX
    Bonjour,
    J'arrive à créer un document MSword avec l'extension .doc
    Comment peut-on créer un document avec l'extension .docx ?
    Quand je le crée en .docx, Word ne peut pas l'ouvrir, mais il l'ouvre après avoir changé l'extension en .doc
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    il manque quelque chose d'essentiel à ta question : comment crées-tu le document dans Lazarus ? Montre-nous le code.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    A partir du document '.DOT' ayant plusieurs signets, je dois y injecter des informations à l'emplacement des signets. à la fin je génère le document MSword en format '.DOC'.
    Tout fonctionne.
    Mais le format 'DOCX', je ne vois pas comment transformer mon code suivant :

    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
    44
    45
     
    function SortieWord():integer;
    var
      ws: widestring;
      Docwd, WdApp, Bookmarkwd: OleVariant;
    begin
      if Assigned(InitProc) then
        TProcedure(InitProc);
     
      try
        WdApp := CreateOleObject('Word.Application');
      except
        WriteLn('MS Word ne peut pas démarrer.');
        Result := -1;
      end;
      WdApp.Visible := False;
     
       { ouvrir un document .DOT ou un .DOTX }
      ws:= UTF8Decode('D:\tmp\doc1.dot');
      Docwd :=  WdApp.Documents.Open(ws, EmptyParam, EmptyParam,
                                 EmptyParam, EmptyParam, EmptyParam, EmptyParam,
                                 EmptyParam, EmptyParam, EmptyParam);
      if Docwd.Bookmarks.Exists('Montant') then
         begin
            Bookmarkwd:= Docwd.Bookmarks.Item('Montant');
            ws := UTF8Decode('123.52€');
            varBookmark.Range.Text := ws;
         end;
    ......
    ......
      if Docwd.Bookmarks.Exists('DateEdition') then
         begin
            Bookmarkwd:= Docwd.Bookmarks.Item('DateEdition');
            ws := FormatDateTime('dd mmmm yyyy', Now);
            varBookmark.Range.Text := ws;
      end;
      Docwd.Range.Select;
      Docwd.Range.Copy;
      Docwd.SaveAs('D:\Tmp\Doc2.doc'); {si je fais :  Docwd.SaveAs('D:\Tmp\Doc2.DOCX'); le document est créé mais Word ne l'ouvre pas }
      Docwd.Close;         
      Bookmarkwd:= Unassigned;
      Docwd := Unassigned;
      WdApp.Quit;           
      Result := 0;
    end;
    Voilà mon code qui fonctionne avec le traitement du couple .DOT/.DOC
    Merci d'avance.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    Quelle version de word as-tu ?
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut
    MSword 2010.

    Complément d'infos :
    si je fais : Docwd.SaveAs('D:\Tmp\Doc2.DOCX'); le document est créé mais Word 2010 ne l'ouvre pas
    Mais si je le renomme en format (.DOC), Word 2010 l'ouvre.

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par tonton67 Voir le message
    Docwd.SaveAs
    Documente-toi sur SaveAs2 : lecture1, lecture2
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    Avec 'SaveAs2', j'ai toujours le même problème : Création du document word 'doc1.docx', MSword 2010 ne reconnaît pas son format, mais en le renommant en 'doc1.doc', il s'ouvre.
    J'ai testé avec MSword 2016, la commande : CreateOleObject('Word.Application'); ne peut pas créer une instance de MSword, tout s'arrête.
    des erreurs avec le message :
    une classe d'exception EOleSysError ....
    En conclusion, je reste avec la création des documents MSword en format '.doc'.
    Merci pour vos suggestions.

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    voici un code qui fonctionne chez moi avec word 2010 :

    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
    procedure TForm1.Button5Click(Sender: TObject);
    var
      ws: string;
      WdApp : OleVariant;
    begin
      if Assigned(InitProc) then
        TProcedure(InitProc);
      try
        WdApp := CreateOleObject('Word.Application');
      except
        WriteLn('MS Word ne peut pas démarrer.');
      end;
      WdApp.Visible := False;
       { ouvrir un document .DOT ou un .DOTX }
      WdApp.Documents.Open('M:\temp\mondoc.dot');
    // wdFormatDocumentDefault    16    Word default document file format. For Word, this is the DOCX format.
      WdApp.ActiveDocument.SaveAs2('M:\Temp\DocSortie.docx',OleVariant(16));
      WdApp.ActiveDocument.Close;
      WdApp.Quit;
    end;
    Le document créé DocSortie.docx est bien un fichier docx. L'astuce consiste à passer le paramètre de format en le "castant" en OleVariant sinon j'ai un OleSysError.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 73
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    Le CAST en OleVariant(16) a très bien fonctionné, quelle magie !
    je n'y ai jamais pensé.
    Merci énormément pour votre super solution.
    Cordialement

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

Discussions similaires

  1. Création de documents word
    Par antiseche dans le forum C++
    Réponses: 3
    Dernier message: 23/06/2006, 15h34
  2. [VB]création de documents PDF
    Par debah2001 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/03/2006, 17h40
  3. Création de document office
    Par pmboutteau dans le forum ASP
    Réponses: 2
    Dernier message: 23/03/2005, 09h16
  4. [Rave] Création de document
    Par QAYS dans le forum Rave
    Réponses: 4
    Dernier message: 15/10/2004, 09h35

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