[計算方法]の設定の取得と変更
【オブジェクト】
_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("テーブル以外自動に設定");
}
}
[サンプル・ソース]