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 :

[Word] Problème de copier/couper/coller suivant les versions


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut [Word] Problème de copier/couper/coller suivant les versions
    Salut à tous,

    Voilà mon problème,
    j'ai un code qui est censé à partir d'un document word, copier un texte et le coller dans un autre doc.

    Mais voilà le problème est que suivant les versions de Word, j'ai un beau plantage ou non. Cela peut très bien marcher aussi

    les bouts de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // sémectionne tout le contenu
        WordApplication1.Selection.WholeStory;
        // Copie le contenu dans le presse papier
        WordApplication1.Selection.Copy;
        // Ferme sans Sauver le fichier temporaire
        WordApplication1.ActiveDocument.close(wdDoNotSaveChanges);
     
    //et la coller qui pose problème
     
    WordApplication1.Selection.Paste(0,0,0);
    J'ai le message suivant : Nombre de paramètres non valide.
    la version de word : 2000 sous sp3

    Donc selon vous :

    Il y a une autre instruction que peut marcher dans toutes les versions de word ?


    merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Je n'ai jamais aussi très bien compris l'utilisation de OLE Automation avec Office. Chaque version d'Office modifie le nombre de paramètres dans ses procédure - fonctions. Et à ma connaissance, faut faire avec (Réadapter le code pour chaque version)

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Peut-être une autre approche, texte issu de la prochaine version de la FAQ :
    [QR]Comment utiliser des arguments nommés et positionnels avec les objets OleAutomation ?
    En règle générale on peut appeler une méthode d'un serveur Automation par une interface ou par un variant.

    Dans le premier cas l'objet manipulé étant fortement typé on doit donc spécifier tous les paramètres. Ceux optionnels devant être remplacés par EmptyParam :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var 
     MaZone: Range; 
     
     Separator: OleVariant; 
     Tableau : Table; 
     
    begin 
      ...
      //Définit le séparateur utilisé lors de la conversion 
     Separator:=';'; 
     MaZone.ConvertToTable(Separator,EmptyParam,EmptyParam,EmptyParam, 
                           EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
                           EmptyParam,EmptyParam,EmptyParam,EmptyParam, 
                           EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    Dans le second cas l'objet manipulé étant de type Variant/OleVariant on peut utiliser les arguments nommés dans l'appel de la méthode.
    Cette expression est évaluée uniquement lors de l'exécution (cf. Dispatch.Invoke)
    On évite ainsi une liste de paramètres vides (EmptyParam), les paramètres qui ne sont pas spécifiés prennent leur valeur par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var 
     MaZone: OleVariant; 
     
     Separator: OleVariant; 
     Tableau : Table; 
     
    begin 
      ...
      //Définit le séparateur utilisé lors de la conversion 
     Separator:=';'; 
     MaZone.ConvertToTable(Separator:=';'); 
    end;
    On peut nommer plusieurs paramètres, l'ordre de leur déclaration n'a pas d'importance.
    Ici cette possibilité facilite le portage entre les versions d'Office dans la mesure où les paramètres utilisés sont communs.

    Il est aussi possible d'utiliser des arguments positionnels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     MaZone.ConvertToTable(Separator,NumRows,,,,,,,,,,,,,,DefaultTableBehavior);
    Ce qui peut s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     MaZone.ConvertToTable(Separator,NumRows,,DefaultTableBehavior);
    Il reste à définir les paramètres commun au différentes versions.

  4. #4
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    Salut et merci de vos réponses

    Donc si je comprend bien dans le cas mon Paste il faudrait savoir pour chaque version d'office quels sont les arguments qui sont demandés et le cas échéant les préciser ?

    Ou bien il faut que je trouve les arguments qui restent identiques à travers les différentes version de words et que je n'indique que ces derniers ?

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SkYsO
    il faudrait savoir pour chaque version d'office quels sont les arguments qui sont demandés
    Surtout ceux que tu utilises et qui sont vraiment nécessaire.

  6. #6
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    En effet.

    Et imaginons que ma méthode Paste prenne différents paramètres.
    Si je mets juste : MonObject.Paste

    ça passera dans toutes les versions ?

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SkYsO
    ça passera dans toutes les versions ?
    Je ne sais pas.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/05/2014, 15h43
  2. Réponses: 8
    Dernier message: 31/05/2006, 15h21
  3. [VB6] copier,couper,coller un texte
    Par guizmoh dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 27/03/2006, 23h05
  4. [VB6] Interception des évènement Copier/Couper/Coller
    Par youtch dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/10/2002, 18h09

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