ファイルに名前を付けて保存


ここでは、CSVフォーマットでファイルを保存する方法を示します。


「ファイルに名前を付けて保存」を実施するためには、SaveAsを使用します。
これは、importによりタイプライブラリを読みこむとVisual Studioが以下のような引数を持つことを
教えてくれます。

HRESULT SaveAs( const _variant_t &Filename,
                const _variant_t &FileFormat,
                const _variant_t &Password,
                const _variant_t &WriteResPassword,
                const _variant_t &ReadOnlyRecommended,
                const _variant_t &CreateBackup,
                enum XlSaveAsAccessMode AccessMode,
                const _variant_t &ConflictResolution = vtMissing,
                const _variant_t &AddToMru = vtMissing,
                const _variant_t &TextCodepage = vtMissing,
                const _variant_t &TextVisualLayout = vtMissing);

備考:引数に付いては、OLE/COM Object Viewerで調べることが出来ます。
      また、VBAを知っている方は基本的に同じ値を取りますのでVBAの引数の値から推測可能です。


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


//実行用のコード
void CXlsformatchgDlg::OnButton1() 
{
	int i, j;
	char buffer[9];
	COleVariant data,data1;
	using namespace Excel;
	_ApplicationPtr pXL;

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

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

	//---------------------------------------------------------
	//アクティブ・シートを取得
	_WorksheetPtr pSheet = pXL->ActiveSheet;

	//---------------------------------------------------------
	//Cellsを使用したデータの出力
	for(i = 1; i < 10; i++){
		for(j = 1; j < 10; j++){
			data = (short)i;
			data1 = (short)j;
			RangePtr pCells = pSheet->Cells->Item[data][data1];
			itoa(i,buffer,10);
			pCells->Value = buffer;	
		}
	}

	pXL->DisplayAlerts = FALSE;

	//-----------------------------------------------------------------------
	//CSV形式で保存
	pBook->SaveAs("c:\\temp\\XlsText.csv", (long)xlCSV, vtMissing, vtMissing,
		          vtMissing, vtMissing, xlExclusive);

	pXL->Quit();
}