読者です 読者をやめる 読者になる 読者になる

Visual Studio 2010 + MFCでExcelを操作する OLE

  • ClassWizeard等からクラスの追加を選ぶ
  • 「TypeLibからのMFCクラス」を選ぶ
  • ここでMicrosoft Office Excel 12.0 Object Libraryを選んで「>>」ボタンで全て追加
  • ヘッダーファイルがガシガシ生成される
  • 何故か#import文が入っていて、コンパイル時にエラー(名前の競合)が出てしまうので一括置換でコメントアウト(めちゃめちゃいっぱいあるのでプロジェクト全体を選んで一気に置換)


Excel開いてA1セルの中身を取り出すサンプル

#include "CApplication.h"
#include "CWorkbooks.h"
#include "CWorksheets.h"
#include "CWorkbook.h"
#include "CWorksheet.h"
#include "CRange.h"

void CHogeHogeDlg::OnBnClickedButton1()
	CApplication App;
	if (!App.CreateDispatch(_T("Excel.Application"))) {
		ASSERT(0);
		return;
	}
	App.put_Visible(TRUE);

	CWorkbooks Workbooks = App.get_Workbooks();

	// 既存のエクセルファイルを開く
	COleVariant varNull;
	varNull.ChangeType(VT_NULL);
	CWorkbook Workbook = Workbooks.Open(_T("c:\\hogehoge.xls"), varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull, varNull,varNull, varNull);

	CWorksheets Worksheets = Workbook.get_Worksheets();
	CWorksheet Worksheet = Worksheets.get_Item(COleVariant((long)1));

	CRange Cells = Worksheet.get_Cells();
	CRange Cell = Cells.get_Item(COleVariant((long)1), COleVariant((long)1)).pdispVal;
	CString str = Cell.get_Text().bstrVal;
}

ネタ元