Delphi Programming / Object Pascal
[掲載 2009年05月26日] [更新 2013年12月16日] エクセル操作フォームEx |
エクセル操作フォームEx 参考コード類
CSV ファイルへの保存 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010 |
現在アクティブで操作対象のシートの内容を,CSVファイルとして保存する例です.
古いエクセルでは同名のファイルは上書き保存はできないため,同名のファイルを削除する必要がありました.このことはマイクロソフトのサイトにも説明がありました.
Excel 2000, Excel 2007, Excel 2010 ではこの現象は発生しないようです.他のバージョンでは確認していません. |
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
AFilePath: String;
begin
SaveDialog1.Filter := 'CSVファイル|*.csv';
SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
if SaveDialog1.Execute then begin
AFilePath := SaveDialog1.FileName;
xlfExcelSheet.SaveAs(AFilePath,
xlCSV,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
0);
end;
end;
TExcelWorkBook を使用した上のコードでは,SaveAs メソッドの引数が省略できません. TExcelWorkBook を OleVariant 型の変数に置き換えて処理すれば,下のコードのように,引数を省略できます. |
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
var
objExcelSheet : OleVariant;
pFilePath : OleVariant;
pFileFormat : OleVariant;
begin
pFilePath := ExtractFilePath(Application.ExeName) + 'ExcelTest.csv';
//xlfExcelBook(TExcelWorkBook)をOleVariant型にして扱うとVBA的な使い方が可能
objExcelSheet := xlfExcelApp.ActiveWorkbook;
//保存形式の指定(xlCSVlはCSV形式保存)
pFileFormat := xlCSV;
try
objExcelSheet.SaveAs(pFilePath, pFileFormat);
//保存したことにする
xlfExcelBook.Saved[0] := True;
//キャプションの表示を変更しておく
Self.Caption := xlfExcelBook.Name;
except
end;
end;
エクセルのデフォルトの設定では,同名のファイルがあると,下図のように「... という名前のファイルが既にあります。置き換えますか」という警告のダイアログが表示されようになっています.
このダイアログは,DisplayAlerts プロパティの値を False にすると抑制できます.ただし,この設定は,全ての警告ダイアログを表示しなくなります. |
|
図1
|
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
begin
xlfExcelApp.DisplayAlerts[0] := False;
end;
|