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

C++Builder Discussion :

oleword (de VBA vers C++)


Sujet :

C++Builder

  1. #21
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    wdCell est un espece de #define que je ne connais pas
    c'est un id
    comment le connaitre ???

  2. #22
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai reussi a fusionner les cellules voici le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myTable = vWDocument.OlePropertyGet("Tables").OleFunction("Item", "1");
    myTable.OleFunction("Cell", 1, 1).OleFunction("Merge", myTable.OleFunction("Cell", 2, 3));
    pour avoir les valeur des constantes utilisees par VB, il faut utiliser le debugger en mode pas a pas, c'est pareil que BCB utiliser "F8" quand on pointe le curseur sur une variable il donne la valeur par exemple "wdCell = 12".

  3. #23
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    bien vu
    merci pour le conseil de deboggage VB ;-)
    pas mal

    je me rends compte donc que l'extend ne marche pas sur des Cell mais plutot sur des caracteres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Table1.OleFunction("Cell", 2, 1).OleFunction("Select");
    vMSWord.OlePropertyGet("Selection").OleFunction("MoveRight", 12, 1, 1);      // wdCell=12
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Cells").OleFunction("Merge");
    parce qu'il deplace tte la selection et non pas augmente la selection !

    Sinon, regarde ds
    c:\Program Files\Borland\BDS\4.0\include\vcl\word_xp.h
    il y a ttes les définitions des
    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
    typedef enum WdUnits
    {
      wdCharacter = 1, 
      wdWord = 2, 
      wdSentence = 3, 
      wdParagraph = 4, 
      wdLine = 5, 
      wdStory = 6, 
      wdScreen = 7, 
      wdSection = 8, 
      wdColumn = 9, 
      wdRow = 10, 
      wdWindow = 11, 
      wdCell = 12, 
      wdCharacterFormatting = 13, 
      wdParagraphFormatting = 14, 
      wdTable = 15, 
      wdItem = 16
    } WdUnits;
    il suffit de l'inclure ds ton .cpp
    #include <word_xp.h>
    et ça marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Table1.OleFunction("Cell", 2, 1).OleFunction("Select");
    vMSWord.OlePropertyGet("Selection").OleFunction("EndOf", wdColumn, wdExtend);
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Bold",true);
    ciao

  4. #24
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    J'ai une solution pour selectionner quelques cellules y appliquer un format les fusionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    myTable = vWDocument.OlePropertyGet("Tables").OleFunction("Item", "1");
    myRange = vWDocument.OleFunction("Range", myTable.OleFunction("Cell", 1, 1)
    .OlePropertyGet("Range").OlePropertyGet("Start"), myTable.OleFunction("Cell", 1, 3).OlePropertyGet("Range").OlePropertyGet("End"));
     
    myRange.OlePropertyGet("Font").OlePropertySet("Bold",true);
     
    myRange.OlePropertyGet("Cells").OleProcedure("Merge");

  5. #25
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    même si c'est plus long que ta 1ere solution, on peut faire plusieurs choses dont le Merge, c'est Top
    y a plus qu'à faire un tutorial ;-)

    ciao et merci

  6. #26
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut tutorial
    Je te propose d'en faire un, avec comme plan :
    les trucs classiques (ouvrir word, document, fermer, quitter, ça existe déjà sur :http://lfe.developpez.com/Word/) mais surtout la manipulation de tableaux, fusion...
    la mise en page, paragraphe, Font, Bold, couleurs,
    masi surtout à chaque fois, la correspondance entre Range et Selection
    y a des fonctions qu'on a ds Selection qu'on n'a pas ds Range particulierement ds les tableaux (exple je veux selectionner un bout de colonne ds un tableau pour lui changer de couleur, eh ben le Range me selectionne ttes les cellules entre les 2 avec start et end et seule la fonction suivante le permet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Table1.OleFunction("Cell", 2, C+6).OleFunction("Select");
        vMSWord.OlePropertyGet("Selection").OleFunction("MoveDown", wdLine, 5, wdExtend);
        vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Color", wdColorRed);
    NB le #include <word_xp.h> facile bcp les choses !!!

    je pense qu'il est important ds le tutorail ou la FAQ de préciser ces choses là.
    tu en penses quoi ?
    on contacte GreyBird ?
    Ciao
    Lotfi

  7. #27
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Tout un lot de fonctions a ete depose pour etre integre a la FAQ, il faudra certainement les retester afin de corriger d'eventuelle erreurs, et de completer les commentaires, je depose regulierement mes trouvailles, ainsi que celles d'autres "Forumeur".

  8. #28
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    cooooool,
    alors à qd la publication !!!
    ils pourraient le faire (meme en version beta ou à tester) !

    et pour l'encapsulation ds des classes
    style ce qu'on fait en VBA
    ça pourrait donner :
    Selection->Font->Color=wdColorRed;
    au lieu de passer par du OleFunction et procedure, get set...
    ça peut être pas mal aussi
    tu sais pas si y'en a qui bossent la dessus ?

    Ciao

  9. #29
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    LotfiB a ecrit:
    cooooool,
    alors à qd la publication !!!
    ils pourraient le faire (meme en version beta ou à tester) !

    et pour l'encapsulation ds des classes
    style ce qu'on fait en VBA
    ça pourrait donner :
    Selection->Font->Color=wdColorRed;
    au lieu de passer par du OleFunction et procedure, get set...
    ça peut être pas mal aussi
    tu sais pas si y'en a qui bossent la dessus ?
    Le code doit rester simple pour les gents peu experimentes, les programmeurs confirmes modifient le code a leur convenance, en BCB je ne pense pas qu'il y est grand monde.

  10. #30
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    justement, l'encapsulation / classes sert à simplifier la syntaxe de l'OleWord !
    ça reviendrai aussi simple que sous VBA pour Word
    l'ennui est que sous BDS2006 y a pas de help dessus
    faut que je regarde sur une ancienne machine ou j'avais BCB6 s'il ya le help sur les composdants office2000 et si borland ont tt encapsulé...
    ciao

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VBA EXCEL] Macro commande vba vers windows
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2007, 12h05
  2. VBA vers VBS syntaxe
    Par Eric dans le forum VBScript
    Réponses: 4
    Dernier message: 22/02/2007, 09h41
  3. [VB Project] Excel Vba vers Microsoft Project
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/10/2006, 12h06
  4. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58

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