WorkSheetを移動



//Excelを操作するためのタイプライブラリを読みこむ(Excel2002用)
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" no_namespace rename("DocumentProperties", "DocumentPropertiesXL")   
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace   
#import "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" rename("DialogBox", "DialogBoxXL") rename("RGB", "RGBXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces


//処理用コード
void CXlsmovsheetDlg::OnButton1() 
{
    using namespace Excel;
    _ApplicationPtr pXL;

    COleVariant pDisp;

     //Excelの起動
    pXL.CreateInstance(L"Excel.Application");
    pXL->Visible = TRUE;

    //WorkBookを追加する
    WorkbooksPtr pBooks = pXL->Workbooks;
    _WorkbookPtr pBook  = pBooks->Add();

    //移動するシートの決定
    _WorksheetPtr pSheets1 = pBook->Worksheets->Item[COleVariant((short)1)];

    //-------------------------------------------------
    //先頭のシートを3番目のシートの後ろへ移動

    //3番目シートのDispatchを取得
    _WorksheetPtr pSheets2 = pBook->Worksheets->Item[COleVariant((short)3)];
    pDisp.vt = VT_DISPATCH;    // --> Dispatchを使用する場合は、明示的な定義が必要
    pDisp.pdispVal = pSheets2;
    
    //シートの移動
    pSheets1->Move(vtMissing, pDisp);
    
    //結果確認のために一時停止
    AfxMessageBox("一時停止");

    //警告メッセージが出ないようにする
    pXL->DisplayAlerts = false;

    //Excelを閉じる
    pXL->Quit();
    pDisp.vt = VT_EMPTY;
}


[サンプル・ソース]