2009-07-23 31 views
0

C++とOLEを使用して、現在フォーカスのあるワークシートのIDを取得する方法を教えてください。私はシートを追加して、私はコンテンツを追加できるように、先ほど追加したシートを取得したいと思いOLEを使用してExcelワークシートのIDを取得する

Variant excelSheets; 
    Variant excelSheet; 

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

は例えば、私は、次のコードを持っています。上記のコードは、ユーザーが左端のシートからフォーカスを移動しない場合にのみ機能します。

セス

答えて

0

あなたはシートを追加するとき、それはActiveSheetになり、あなたはそこからそれを扱うことができますので、私はOlePropertyGet("ActiveSheet");を使用して終了。私は以下のような例を挙げました:

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"); 
関連する問題