wdCell est un espece de #define que je ne connais pas
c'est un id
comment le connaitre ???
wdCell est un espece de #define que je ne connais pas
c'est un id
comment le connaitre ???
J'ai reussi a fusionner les cellules voici le code.
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".
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));
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
parce qu'il deplace tte la selection et non pas augmente la selection !
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");
Sinon, regarde ds
c:\Program Files\Borland\BDS\4.0\include\vcl\word_xp.h
il y a ttes les définitions des
il suffit de l'inclure ds ton .cpp
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;
#include <word_xp.h>
et ça marche :
ciao
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);
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");
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
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
NB le #include <word_xp.h> facile bcp les choses !!!
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);
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
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".
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
LotfiB a ecrit:
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.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 ?
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
Partager