使用OLE获取焦点的Excel工作表的ID

时间:2009-07-23 05:14:52

标签: c++ excel ole worksheet

使用C ++和OLE,我如何获取当前焦点的工作表的ID?

例如,我有以下代码:

    Variant excelSheets;
    Variant excelSheet;

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

我想添加一张工作表,然后获取刚刚添加的工作表,以便我可以添加内容。上述代码仅在用户不将焦点偏离最左侧的工作表时才有效。

赛斯

1 个答案:

答案 0 :(得分:0)

我最终使用OlePropertyGet( "ActiveSheet" );,因为当您添加工作表时,它将成为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" );