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
|
J'ai readapte la deuxieme version de creation d'une Macro.
le code:
Code :
Variant vXLWorkbook, VBComp, vMSExcel
int X;
// on cree un module pour du code VB
VBComp = vXLWorkbook.OlePropertyGet("VBProject").OlePropertyGet("VBComponents").OleFunction("Add", 1);
// on renome le module sans espaces dans le nom
VBComp.OlePropertySet("Name", "MyModule");
VBComp.OlePropertyGet("CodeModule");
// on ecrit la macro dans le module cree
X = VBComp.OlePropertyGet("CodeModule").OlePropertyGet("CountOfLines");
VBComp.OlePropertyGet("CodeModule").OleProcedure("InsertLines", X + 1, "Sub laMacro()");
VBComp.OlePropertyGet("CodeModule").OleProcedure("InsertLines", X + 2, " Rows(\"10:11\").Select");
VBComp.OlePropertyGet("CodeModule").OleProcedure("InsertLines", X + 3, "End Sub");
vMSExcel.OleProcedure("Run", "laMacro");
// on efface les lignes dans l'ordre inverse de la saisie
VBComp.OlePropertyGet("CodeModule").OleFunction("DeleteLines", 3);
VBComp.OlePropertyGet("CodeModule").OleFunction("DeleteLines", 2);
VBComp.OlePropertyGet("CodeModule").OleFunction("DeleteLines", 1);
// ici il n'y a plus aucune trace de la macro
vXLWorkbook.OlePropertyGet("VBProject").OlePropertyGet("VBComponents").OleFunction("Remove", VBComp);
Ce code est parfait pour de courtes Macro.
Il a ete teste sous Excel 2003. |
Partager