複数の異なるディレクトリにファイルを保存させるには?

解決


さばたん  2003-09-26 01:14:29  No: 4988

お世話になります。

ファイル保存の仕方についてです。

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)部分で足りないのでしょうか?

お分かりになる方がいらっしゃいましたらご教授の程よろしくお願いします。


LupinⅢ  URL  2003-09-26 01:18:36  No: 4989

一度目の上書き保存はうまくいっているんですよね?
それならばそのファイルをコピー関数を使用して別名でコピーしてはどうでしょう?

そうすれば結果は別名で保存した状態になると思います。


kazu  2003-09-26 01:53:38  No: 4990

上記コードの場合なら、
if SaveDialog1.Execute then
  WorkBook.SaveAs(SaveDialog1.FileName);
でいけます。

>お分かりになる方がいらっしゃいましたらご教授の程よろしくお願いします。
Delphiというよりも、むしろVBAの問題なのでVBAのヘルプをみてください。


さばたん  2003-09-26 04:19:52  No: 4991

LupinⅢさん、kazuさん、ありがとうございます。

できました!

> LupinⅢさん
はい、一度目の保存はうまくいっていて、
別のディレクトリへの保存はコピー関数より
保存先へコピーされました!

> kazuさん
記載したコードを書き換えたところうまく動作しました!
これからはVBAのヘルプも覗いてみます。

お二人ともありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加