2009-07-23 9 views
0

En utilisant C++ et OLE, comment puis-je obtenir l'ID de la feuille de calcul actuellement mise au point?Obtention de l'ID de la feuille de calcul Excel à l'aide de OLE

Par exemple, j'ai le code suivant:

Variant excelSheets; 
    Variant excelSheet; 

    excelSheets.OleProcedure("Add"); 
    excelSheet= excelSheets.OlePropertyGet("Item", 1); 

Je voudrais ajouter une feuille, puis obtenir la feuille qui vient d'être ajouté afin que je puisse ajouter du contenu. Le code ci-dessus ne fonctionne que si l'utilisateur ne décale pas le focus de la feuille qui est à l'extrême gauche.

Seth

Répondre

0

je me suis retrouvé à l'aide OlePropertyGet("ActiveSheet"); parce que lorsque vous ajoutez une feuille, il devient le ActiveSheet et vous pouvez travailler avec elle à partir de là. Je mets un exemple de ce que j'ai fait ci-dessous:

Variant excelApp; 
    Variant excelBooks; 
    Variant excelWorkBook; 
    Variant excelSheet; 
    Variant excelSheets; 

    try 
    { 
     mExcelApp = Variant::GetActiveObject("Excel.Application"); 
    } 
    catch(EOleSysError& e) 
    { 
     mExcelApp = Variant::CreateObject("Excel.Application"); //open excel 
    } 
    catch(...) 
    { 
     throw; 
    } 

    mExcelApp.OlePropertySet("ScreenUpdating", true); 
    excelBooks = mExcelApp.OlePropertyGet("Workbooks"); 
    excelWorkBook = excelBooks.OlePropertyGet("Item",1); 

    // a worksheet is added which becomes the active sheet 
    excelSheets.OleProcedure("Add"); 
    excelSheet = excelWorkBook.OlePropertyGet("ActiveSheet");