保存ボタンを押したとき、
別名のバックアップが取りたくて
下記のようなマクロを設定しています。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FName As String
fol = "c:\作業中"
FName = fol & "\" & "bbb.xls"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FName, CreateBackup:=True
Application.DisplayAlerts = True
End Sub
ただ、上記マクロだと保存ボタンを押した後に
ファイル自体がbbb.xlsとなってしまいます。
aaa.xlsのままで作業を継続したいのですが可能でしょうか?
※保存ボタンをおしたときにバックアップを作成するようなイメージです。
※aaa.xlsは毎回ファイル名、保存してある場所が変更されます。
どうぞよろしくお願いいたします。
逆の発想ですが、保存してからコピーでどうでしょうか。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '// 一旦自分自身を保存 Application.EnableEvents = False ThisWorkbook.Save Application.EnableEvents = True '// バックファイルをコピー Const backupPath = "D:\Work\bbb.xls" With CreateObject("Scripting.FileSystemObject") .CopyFile ThisWorkbook.Path & "\" & ThisWorkbook.Name, backupPath, True End With Cancel = True End Sub
蛇足ですが、
Const backupPath = "D:\Work\bbb.xls"
の部分を下記のようにすれば、保存ごとに時間情報をファイル名にして保存していきます。
Dim backupPath As String backupPath = "D:\Work\bbb_" & Application.Text(Now(), "YYYYMMDD_HHMMSS") & ".xls"
でも1世代前だけあればよいのであれば、不要ですね。
aaa.xlsをコピーして bbb.xlsにしてやればよい。
FileCopy ThisWorkbook.FullName, FName
といった感じで。
ありがとうございます。
逆の発想ですが、保存してからコピーでどうでしょうか。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '// 一旦自分自身を保存 Application.EnableEvents = False ThisWorkbook.Save Application.EnableEvents = True '// バックファイルをコピー Const backupPath = "D:\Work\bbb.xls" With CreateObject("Scripting.FileSystemObject") .CopyFile ThisWorkbook.Path & "\" & ThisWorkbook.Name, backupPath, True End With Cancel = True End Sub
蛇足ですが、
Const backupPath = "D:\Work\bbb.xls"
の部分を下記のようにすれば、保存ごとに時間情報をファイル名にして保存していきます。
Dim backupPath As String backupPath = "D:\Work\bbb_" & Application.Text(Now(), "YYYYMMDD_HHMMSS") & ".xls"
でも1世代前だけあればよいのであれば、不要ですね。
ありがとうございます。
下記を利用させていただきます。
Dim backupPath As String
backupPath = "D:\Work\bbb_" & Application.Text(Now(), "YYYYMMDD_HHMMSS") & ".xls"
ちなみにですが、
Private Sub Workbook_BeforePrint(Cancel As Boolean)や
Private Sub Workbook_BeforeClose(Cancel As Boolean)では
実行できませんでした。
プリントのほうでも実行されるようにしたいのですが可能でしょうか?
どうぞよろしくお願いいたします。
ありがとうございます。
下記を利用させていただきます。
Dim backupPath As String
backupPath = "D:\Work\bbb_" & Application.Text(Now(), "YYYYMMDD_HHMMSS") & ".xls"
ちなみにですが、
Private Sub Workbook_BeforePrint(Cancel As Boolean)や
Private Sub Workbook_BeforeClose(Cancel As Boolean)では
実行できませんでした。
プリントのほうでも実行されるようにしたいのですが可能でしょうか?
どうぞよろしくお願いいたします。