Excel VBA 上書き保存でバックアップ用ブックを自動で作成する

スポンサーリンク

上書き保存でブックの複製を自動で作成する

大切なブックはバックアップと取っておくと安心です。ブックを保存する直前にブックの複製(バックアップ)を自動で作成する方法について説明します。

ブックを保存する直前に自動でプロシージャーを実行するためにThisWorkbook【ディスワークブック】モジュールのPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)イベントプロシージャーに、コードを記述します。

ThisWorkbookモジュールの使い方についてはこちらをご覧ください。

ブックの複製を保存するWorkbook【ワークブック】オブジェクトのSaveCopyAs【セーブコピーアズ】メソッドを使用し、複製ブックの保存場所(パス)とブック名を指定する引数Filename【ファイルネーム】には、Now【ナウ】関数を使用して、バックアップ時の「年月日_時分秒_元のブック名」という形式にして、いつのバックアップかわかるようにしてバックアップブックを作成します。

バックアップ保存用のフォルダーにバックアップブックを保存するので、コードを記述するブックの保存場所と同じ場所に「バックアップ」という名前のフォルダーを作成してください。

上書き保存でブックの複製を自動で作成するコードと解説

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim パス As String
 Dim ファイル名 As String
 パス = ThisWorkbook.Path
 ファイル名 = Format(Now(), "yyyymmdd") & "_" & Format(Now(), "hhmmss") & "_" & ThisWorkbook.Name
 ThisWorkbook.SaveCopyAs Filename:=パス & "¥バックアップ¥" & ファイル名
End Sub
1行目【Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)】
ThisWorkbook【ディスワークブック】モジュールにブックを保存する直前に発生するイベントプロシージャーのBeforeSave【ビフォアセーブ】イベントプロシージャーを作成します。


2行目【 Dim パス As String】
このブックのパス(場所)を格納する変数「パス」を文字列型(String)で宣言します。


3行目 【Dim ファイル名 As String】
バックアップ用のブックの名前を格納する変数「ファイル名」を文字列型(String)で宣言します。


4行目【パス = ThisWorkbook.Path】
Application【アプリケーション】オブジェクトのThisWorkbook【ディスワークブック】プロパティを使用してこのコードが記述されているWorkbook【ワークブック】オブジェクトを参照し、Path【パス】プロパティを使用して、このブックが保存されている場所(パス)を取得して、変数「パス」に代入します。


5行目 【ファイル名 = Format(Now(), “yyyymmdd”) & “_” & Format(Now(), “hhmmss”) & “_” & ThisWorkbook.Name】
書式を変換するFormat【フォーマット】関数を使用して第一引数に日付や時刻を表す変換したい文字列としてNow【ナウ】関数で取得した日時を設定し、年月日と時分秒をNow【ナウ】関数から取得し、Application【アプリケーション】オブジェクトのThisWorkbook【ディスワークブック】プロパティで、このプロシージャーが記述されているブックを参照して、Workbook【ワークブック】オブジェクトのName【ネーム】プロパティで、このコードが記述されているブックの名前を取得し、文字列を連結するアンパサンド「&」で連結して、変数「ファイル名」に代入します。


6行目 【ThisWorkbook.SaveCopyAs Filename:=パス & “¥バックアップ¥” & ファイル名】
ブックのコピーを保存するWorkbook【ワークブック】オブジェクトのSaveCopyAs【セーブコピーアズ】メソッドを使用して、保存場所(パス)とファイル名を指定する引数Filename【ファイルネーム】にこのプロシージャ記述されているブックが保存されている場所が格納されている変数「パス」フォルダー名の文字列と、このコードが記述されているブックのブック名とNow【ナウ】関数で取得したバックアップ日時が格納されている変数「ファイル名」を指定して複製ブック(バックアップ)をバックアップフォルダーに作成します。
※必ずブックと同じ場所に「バックアップ」フォルダーを作成してください。
フォルダー名を変更する場合は6行目の【”¥バックアップ¥”】この部分を変更してください。

以上で
上書き保存でバックアップ用ブックを自動で作成する方法の解説を終了します。
ありがとうございました。

スポンサーリンク

関連記事・広告