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 :

Liaison OLE Word 2010 récalcitrante [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    jpp
    jpp est déconnecté
    Membre régulier Avatar de jpp
    Homme Profil pro
    en recherche d'emploi
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : en recherche d'emploi

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 72
    Points
    72
    Par défaut Liaison OLE Word 2010 récalcitrante
    Bonjour,

    Franchement, je comprends ce qui se passe mais je n'arrive pas à m'en sortir. Voilà ce qui m'arrive : je mets en place une liaison OLE pour ouvrir un document avec Word 2010. Quand je mets le nom du fichier en dur dans le code, ça marche parfaitement ; dès que je mets le nom et le chemin du fichier en variable, j'ai un message d'erreur, soit mémoire insuffisante, soit ne trouve pas le chemin. J'ai essayé de mettre des Quotedstr, de mettre les caractères ascii "39, ça ne marche toujours pas.
    Là ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    vMSWord,vWDocuments,vWDocument:variant;
    begin
     //demarrer word
     vMSWord:=CreateOLEObject('Word.Application');
     vMSWord.Visible:=true;
     
     //ouvrir un document word
     vMSWord.Documents.Open('+edit1.text+');
    end;
    et là ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    vMSWord,vWDocuments,vWDocument:variant;
    begin
     //demarrer word
     vMSWord:=CreateOLEObject('Word.Application');
     vMSWord.Visible:=true;
     
     //ouvrir un document word
     vMSWord.Documents.Open('c:\test\test.docx');
    end;
    C'est d'autant plus vexant que je suis persuadé que c'est un détail insignifiant. . Mais quand ça veut pas,
    JPP
    tout ce qui est rare est cher, un cheval bon marché est rare, donc un cheval bon marché est cher.

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Cette ligne me semble incorrecte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     vMSWord.Documents.Open('+edit1.text+');
    En supposant que edit1.text contienne un nom de fichier, je crois qu'il faudrait plutôt écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     vMSWord.Documents.Open(edit1.text);
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    jpp
    jpp est déconnecté
    Membre régulier Avatar de jpp
    Homme Profil pro
    en recherche d'emploi
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : en recherche d'emploi

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 72
    Points
    72
    Par défaut
    bonjour

    effectivement, la ligne n'était pas correcte, cependant, que je mette ceci ou juste edit1.text, ça ne change rien j'ai toujours le même problème. Il semblerait que le serveur variant n'accepte pas les apostrophes qui ne sont pas dans le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSWord.Documents.Open(edit1.text);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nomfichier :=quotedstr(edit1.text);
    vMSWord.Documents.Open(nomfichier);
    rien n'y fait
    JPP
    tout ce qui est rare est cher, un cheval bon marché est rare, donc un cheval bon marché est cher.

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 299
    Points
    11 299
    Billets dans le blog
    6
    Par défaut
    Compatibilité UTF-8 (Edit.Text) et AnsiString (Open) ? Dans ce cas, utiliser UTF8Decode().
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    jpp
    jpp est déconnecté
    Membre régulier Avatar de jpp
    Homme Profil pro
    en recherche d'emploi
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : en recherche d'emploi

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    donc quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     //demarrer word
     vMSWord:=CreateOLEObject('Word.Application');
     vMSWord.Visible:=true;
     nomfichier:=UTF8Decode(edit1.text);
     //ouvrir un document word
     vMSWord.Documents.Open(nomfichier);
    ou alors pas , en tout cas a marche pas
    JPP
    tout ce qui est rare est cher, un cheval bon marché est rare, donc un cheval bon marché est cher.

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSWord.Documents.Open('"'+edit1.text+'"');
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 299
    Points
    11 299
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nomfichier:='c:\test\test.docx';
    vMSWord.Documents.Open(nomfichier);
    fonctionne-t-il ? avec quelles déclarations de types de chaînes ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    jpp
    jpp est déconnecté
    Membre régulier Avatar de jpp
    Homme Profil pro
    en recherche d'emploi
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : en recherche d'emploi

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 72
    Points
    72
    Par défaut
    merci de votre aide.
    bon Roland ça ne fonctionne pas, avec cette syntaxe, le nom de fichier n'est pas reconnu et donc Word s'ouvre et c'est tout.

    Tourlourou, Ça ne fonctionne pas, et la on a un message d'erreur du serveur OLE je crois qui dit que la mémoire est insuffisante pour cette opération. chose qui est faux, sinon ça ne marcherait pas en mettant le chemin en dur.

    les déclarations sont les suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     var
    vMSWord,vWDocuments,vWDocument,Varian:variant;
    nomfichier:ansistring;
    en même temps si je mets un string a la place de l'ansistring, c'est exactement la même chose Word s'ouvre et ensuite on a le message (mémoire insuffisante pour cette opération).

    je viens de tester en mettant un widestring et la , Ca marche !
    du coup, j'essaie et je mets ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     var
    vMSWord,vWDocuments,vWDocument:variant;
    nomfichier:widestring; 
    begin
     //demarrer word
     vMSWord:=CreateOLEObject('word.Application');
     vMSWord.Visible:=true;
     nomfichier:=edit1.text;
     
     //ouvrir un document word
     vMSWord.Documents.Open(nomfichier);
    et ça marche aussi !
    Merci beaucoup a tous les deux, je vais pouvoir rendre mon projet avec juste quelques jours de retard, mais ça va passer. et Puis je suis content de pouvoir passer à autre chose parce que avec toutes ces histoires de string ça commençait à m'exciter !
    JPP
    tout ce qui est rare est cher, un cheval bon marché est rare, donc un cheval bon marché est cher.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/01/2015, 00h41
  2. Comment créer un lien hypertexte avec une liaison OLE Excel ?
    Par vieuxsinge dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 08/12/2005, 17h16
  3. [OLE / Word] Ecriture sur en tete et pied de page
    Par Mijakely dans le forum VBA Word
    Réponses: 1
    Dernier message: 10/08/2005, 14h39
  4. [Ole Word] Fermeture du OleContainer
    Par nanomag dans le forum Composants VCL
    Réponses: 6
    Dernier message: 19/07/2004, 18h53
  5. [CR] Demande récurrente de mot de passe de liaison OLE
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 18/05/2004, 17h30

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