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