0

C++ と OLE を使用して、現在フォーカスされているワークシートの ID を取得するにはどうすればよいですか?

たとえば、次のコードがあります。

    Variant excelSheets;
    Variant excelSheet;

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

シートを追加してから、コンテンツを追加できるように追加されたばかりのシートを取得したいと思います。上記のコードは、ユーザーが左端にあるシートからフォーカスを移動しない場合にのみ機能します。

セス

4

1 に答える 1

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" );
于 2009-07-24T05:29:03.910 に答える