お世話になります。
ファイル保存の仕方についてです。
procedure TForm1.Button1Click(Sender: TObject);
var
OpenFileName, FileName: String;
Excel: Variant;
WorkBook: Variant;
WorkSheet: Variant;
F: File;
begin
OpenFileName := 'c:\xxx\test.xls';
Excel := CreateOleObject('Excel.Application');
Excel.Visible := false;
Excel.WorkBooks.Open(FileName := OpenFileName, readOnly := false);
WorkBook := Excel.ActiveWorkbook;
WorkSheet := Excel.ActiveSheet;
//書き込み
WorkSheet := WorkBook.WorkSheets[3];
WorkSheet.Cells[2,3].Value := 'test';
Excel.WorkSheets[1].Activate;
//保存1
WorkBook.Save; // ← (1)
//保存2
FileName := 'mytest.xls';
SaveDialog1.InitialDir := 'c:\yyy\';
SaveDialog1.Filter := 'Excel | *.xls';
if (SaveDialog1.Execute) then
begin
AssignFile(F, SaveDialog1.FileName); // ← (2)
//Rewrite(F);
// .....
//CloseFile(F);
end;
//終了処理
Excel.WorkBooks.Close;
Excel.Quit;
end;
(1)部分で上書き保存[c:\xxx\]をしているのですが
これとは別に、(選択可能な)違うディレクトリ[例えば、c:\yyy\]に
別名を付けて保存させようとしています。
一連の動作の中で同時に上書き処理と別名保存処理を行えるのでしょうか?
SaveDialog を使用すればと思いやってみたのですがどうもうまくいきません。。
(2)部分で足りないのでしょうか?
お分かりになる方がいらっしゃいましたらご教授の程よろしくお願いします。
一度目の上書き保存はうまくいっているんですよね?
それならばそのファイルをコピー関数を使用して別名でコピーしてはどうでしょう?
そうすれば結果は別名で保存した状態になると思います。
上記コードの場合なら、
if SaveDialog1.Execute then
WorkBook.SaveAs(SaveDialog1.FileName);
でいけます。
>お分かりになる方がいらっしゃいましたらご教授の程よろしくお願いします。
Delphiというよりも、むしろVBAの問題なのでVBAのヘルプをみてください。
LupinⅢさん、kazuさん、ありがとうございます。
できました!
> LupinⅢさん
はい、一度目の保存はうまくいっていて、
別のディレクトリへの保存はコピー関数より
保存先へコピーされました!
> kazuさん
記載したコードを書き換えたところうまく動作しました!
これからはVBAのヘルプも覗いてみます。
お二人ともありがとうございました。
ツイート | ![]() |