2009-07-23 181 views
0

使用C++和OLE,我該如何獲得當前所關注的工作表的ID?使用OLE獲取專注於Excel工作表的ID

例如,我有以下代碼:

Variant excelSheets; 
    Variant excelSheet; 

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

我想補充一個表,然後讓剛加入,這樣我可以添加內容的表。以上代碼僅適用於用戶未將焦點從最左側的表單上移開的情況。

賽斯

回答

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");