2

保存時にファイルを別のフォルダに自動的にバックアップするマクロが欲しいのですが。動作するマクロを見つけましたが、実行するたびにコピーが作成されます(ファイルの保存時に自動的に作成されるわけではありません)。誰かが私が説明したように動作するようにマクロコードを修正するのを手伝ってもらえますか?

私が持っているマクロ:

Sub Auto_Save()

Dim savedate

savedate = Date

Dim savetime
savetime = Time
Dim formattime As String
formattime = Format(savetime, "hh.MM.ss")
Dim formatdate As String
formatdate = Format(savedate, "DD - MM - YYYY")

Application.DisplayAlerts = False

Dim backupfolder As String
backupfolder = "Z:\My Documents\"
ActiveWorkbook.SaveCopyAs Filename:=backupfolder & formatdate & " " & formattime & " " & ActiveWorkbook.Name
ActiveWorkbook.Save
Application.DisplayAlerts = True
MsgBox "Backup Run. Please Check at: " & backupfolder & " !"

End Sub
4

2 に答える 2

6

元のファイルと同じ名前のバックアップ ファイルが 1 つだけ必要ということですか? バックアップ コピーのファイル名から日付と時刻を削除するだけです。

ActiveWorkbook.SaveCopyAs Filename:=backupfolder & ActiveWorkbook.Name

また、保存しようとしたときにバックアップファイルが開いている場合に備えて、何らかのエラー処理を追加する必要があります。

編集(新しい入力に基づいて更新)

では、イベントをトラップする必要があります。BeforeSaveイベントで試してみましたが、うまくいきます。AfterSave体験できるイベントもあります。

ThisWorkbook以下をモジュールに追加します。

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim backupfolder As String

    backupfolder = "Z:\My Documents\"

    ThisWorkbook.SaveCopyAs Filename:=backupfolder & ThisWorkbook.Name
End Sub
于 2013-03-07T10:03:27.830 に答える