[計算方法]の設定の取得と変更



【オブジェクト】

  _Application

【プロパティ】

    [状態を取得]
    long object->Calculate

    [設定の変更]
    object->Calculate = long

【値】

    enum XlCalculation
    {
        xlCalculationAutomatic = -4105,    //自動
        xlCalculationManual = -4135,    //手動
        xlCalculationSemiautomatic = 2    //テーブル以外自動
    };

【内容】

    [ツール]-[オプション]-[計算方法]タブ-[計算方法]の値取得と設定

【サンプル】

//Excelを操作するためのタイプライブラリを読みこむ(Excel2000用)
#import "C:\Program Files\Microsoft Office\Office\Mso9.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\Office\excel9.olb" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

//名前空間の設定
using namespace Excel;

//オブジェクトの定義
_ApplicationPtr pXL;

//Excelを起動
void CImp_app_CalculationDlg::OnButton3() 
{
     //Excelの起動
    pXL.CreateInstance(L"Excel.Application");

    //Excelを表示
    pXL->Visible = TRUE;

    //WorkBookを新規で開く
    pXL->Workbooks->Add();
}

//Excelを終了
void CImp_app_CalculationDlg::OnButton4() 
{
    pXL->DisplayAlerts = false;
    pXL->Quit();
    pXL = NULL;
}

//設定を取得
void CImp_app_CalculationDlg::OnButton1() 
{
    //[計算方法]ラジオボタンの設定を取得
    long lngCalc = pXL->Calculation;
    
    //設定の判定
    switch(lngCalc){
    case xlCalculationAutomatic:
        AfxMessageBox("計算方法 = 自動");
    case xlCalculationManual:
        AfxMessageBox("計算方法 = 手動");
    case xlCalculationSemiautomatic:
        AfxMessageBox("計算方法 = 半自動");
    }
}

//設定を変更
void CImp_app_CalculationDlg::OnButton2() 
{
    //ラジオボタンを取得
    CButton* radio1 = (CButton*)GetDlgItem(IDC_RADIO1);
    CButton* radio2 = (CButton*)GetDlgItem(IDC_RADIO2);
    CButton* radio3 = (CButton*)GetDlgItem(IDC_RADIO3);

    //設定の変更
    if(radio1->GetCheck() == 1){
        //自動
        pXL->Calculation = xlCalculationAutomatic;
        AfxMessageBox("自動に設定");
    }
    if(radio2->GetCheck() == 1){
        //手動
        pXL->Calculation = xlCalculationManual;
        AfxMessageBox("手動に設定");
    }    
    if(radio3->GetCheck() == 1){
        //半自動
        pXL->Calculation = xlCalculationSemiautomatic;
        AfxMessageBox("テーブル以外自動に設定");
    }
}


[サンプル・ソース]