○MFC Excel操作
プロジェクト→クラスの追加→TypeLibからのMFCクラスを開く
■タイプライブラリを選択して、クラスを生成します。
私の場合はMicrosoft Excel 8.0 Object Library<1.2>を選択して
CApplication.h
CWorkbooks.h
CWorksheet.h
CWorksheets.h
CRange.h
以上のラッパークラスを作成しました。
#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorksheet.h"
#include "CWorksheets.h"
#include "CRange.h"
CApplication app;
CWorkbooks books;
COleVariant NonOption((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
void CsssDlg::OnBnClickedButton1()
{
CoInitialize(NULL);//COMを利用するスレッド毎に呼び出さなければならないAPI
if(app.CreateDispatch("Excel.Application")){
app.put_Visible(TRUE);//エクセルを画面に表示
books=app.get_Workbooks();
books.Add(NonOption);//新しいシートを開く
//books.Open("c:\\a.xls",//読み取り専用でファイルを開く
//NonOption,NonOption,NonOption,NonOption,NonOption,NonOption,
//NonOption,NonOption,NonOption,NonOption,NonOption,NonOption);
CWorksheets sheets=app.get_Worksheets();
CWorksheet sheet=sheets.get_Item(COleVariant((short)1));//一つ目のシートを選択
CRange r = sheet.get_Range(COleVariant("A1"), COleVariant("A1"));//セルを取得
r.put_Value(COleVariant("=A2+A3"));//セルに文字や数式を入れる
CString str=r.get_Value();//セルの値を取得
TRACE(str);
sheet.SaveAs("c:\\test.xls",NonOption,NonOption,NonOption,//ファイルへ保存
NonOption,NonOption,NonOption,NonOption,NonOption);
app.Quit();
books.ReleaseDispatch();
app.ReleaseDispatch();
}else{
TRACE("err");
}
}
○補足
私の環境では、CRange.hの内容が
VARIANT DialogBox()
{
............................
}
となっており、エラーが発生しましたので、
勝手に、
VARIANT CDialogBox()
{
............................
}
に変更しました。
▲トップページ
>
Windows と C++