• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAでのSaveCopyAsの挙動)

Excel VBAでのSaveCopyAsの挙動

このQ&Aのポイント
  • Excel VBAのSaveCopyAsを使用して、変更がある場合にバックアップファイルを作成する方法についてのヒントをお求めです。
  • 保存せずにExcelを閉じる場合でも、SaveCopyAsを通してバックアップファイルを作成できない問題が発生しています。
  • ThisWorkbookオブジェクトを使用して、Workbook_beforeCloseおよびWorkbook_BeforeSaveイベントを処理することで、バックアップファイルを作成することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> いただいたアドバイスを反映させてみましたが、 > やはりバックアップは作成されませんでした。。。 そうですか…こちら2013では以下のようにして保存されています。 ただ、他のエクセルファイルが開いていて該当ファイルを終了した場合、たまに「変更があるので保存しますか」というダイアログが出て保存されない事がありました。該当フィルだけの場合は保存されています。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.Saved = False Then Application.EnableEvents = False ThisWorkbook.Save ThisWorkbook.SaveCopyAs "バックアップファイルのフルパス" Application.EnableEvents = False End If End Sub

sunanezumi59
質問者

お礼

ありがとうございます! バックアップファイルができていないと申し上げましたが、リモート環境のせいかバックアップファイルができるのが(とてつもなく)遅かったようです。別の作業をしていてふと気が付いたらバックアップファイルができていました! カラクリが今一つわからないのですが、ご教示いただいた方法でいってみます。 本当にありがとうございました!!

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

たしかにSaveCopyAsを通りますが実行されませんね…。 ただ、BeforeSaveの中でSaveした時にBeforeSaveイベントが起こらないようにしているとしたら、その部分で直接保存するときとSaveで呼ばれたときとで何か違いがあるのかもしれませんね。 とりあえず以下の方法で Workbook_beforeCloseの方で Application.EnableEvents = False ThisWorkBook.Save ThisWorkbook.SaveCopyAs "バックアップファイルフルパス" Application.EnableEvents = True として逃げておくというのはいかがでしょう。

sunanezumi59
質問者

お礼

早速ご回答ありがとうございます。 再現性があるようなので、ちょっとホッとしました。 いただいたアドバイスを反映させてみましたが、 やはりバックアップは作成されませんでした。。。 こういう仕様だとするとちょっと困ってしまいます。 引き続き、アイディアをお待ちしております。 ありがとうございます。

関連するQ&A