使用C ++和OLE,我如何获取当前焦点的工作表的ID?
例如,我有以下代码:
Variant excelSheets;
Variant excelSheet;
excelSheets.OleProcedure("Add");
excelSheet= excelSheets.OlePropertyGet("Item", 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" );