使用OLE获取专注于Excel工作表的ID
问题描述:
使用C++和OLE,我该如何获得当前所关注的工作表的ID?使用OLE获取专注于Excel工作表的ID
例如,我有以下代码:
Variant excelSheets;
Variant excelSheet;
excelSheets.OleProcedure("Add");
excelSheet= excelSheets.OlePropertyGet("Item", 1);
我想补充一个表,然后让刚加入,这样我可以添加内容的表。以上代码仅适用于用户未将焦点从最左侧的表单上移开的情况。
赛斯
答
我结束了使用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");