ファイルに名前を付けて保存
ここでは、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();
}