Excelで苦労して作ったファイル(ブック)を何重にもバックアップしておきたい時ってありません?
私はあるんです!
なので、Excelを閉じる時に自動でバックアップをとるようにVBAで作ってみました。
投稿者「みか」自己紹介
- パソコンとデータベースが大好き
- 自社でネットワーク・システム・機器管理、Webサイト構築
- 自社向けのシステムをMicrosoft AccessやPHPで多数構築
- Excelでの作業はVBAを使って効率化
- ロックバンド「VARS」でベース担当
- 「VARS」のWebサイト、ブログも構築
- 「VARS」のライブを観に来てね!https://vasofatum.jp/live/
VBAで自動バックアップ
元のファイル(ブック)と同じフォルダに「BackUp」というフォルダを自動で作り、その中にバックアップをとります。
コードは「ThisWorkbook」の中の「BeforeClose」の部分に書きます。
VBAは以下のとおり。
- 同じフォルダ内に「BackUp」というフォルダが存在するか?しない場合は作成。
- バックアップと差がないようにブックを上書き保存。
- ブックの名前に今の日付と時間を足して名前を付けて保存。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'このブック用
Dim wb As Workbook
'このブックの名前用
Dim wb_name As String
'バックアップフォルダパス用
Dim bk_path As String
'このブックをセット
Set wb = ThisWorkbook
'このブックのフォルダの中にバックアップ用フォルダパス
bk_path = wb.Path & "\BackUp"
'バックアップ用フォルダがあるかどうか、ない場合は作成
If Dir(bk_path, vbDirectory) = "" Then
MkDir bk_path
End If
'このブックの名前を拡張子を抜いて代入
wb_name = Left(wb.Name, Len(wb.Name) - 5)
'バックアップと差がないようにこのブックを上書き保存
wb.Save
'バックアップ用に今の日付と時間を足して名前を付けて保存
wb.SaveAs Filename:=bk_path & "\" & wb_name & "_" & Format(Now, "yyyymmdd") & "_" & Format(Now, "hhnnss") & ".xlsm"
End Sub
ブックを閉じてみたら、同じフォルダ内に「BackUp」というフォルダが出来ています♪
そして、バックアップファイルもちゃんと出来ています♪
これで完成です!
自動化できるものは自動化していきます♪