Excel

Excel VBAでブックを閉じる時に自動でバックアップをとる

Excelで苦労して作ったファイル(ブック)を何重にもバックアップしておきたい時ってありません?

私はあるんです!

なので、Excelを閉じる時に自動でバックアップをとるようにVBAで作ってみました。

投稿者「みか」自己紹介

  • パソコンとデータベースが大好き
  • 自社でネットワーク・システム・機器管理、Webサイト構築
  • 自社向けのシステムをMicrosoft AccessやPHPで多数構築
  • Excelでの作業はVBAを使って効率化
  • ロックバンド「VARS」でベース担当
  • 「VARS」のWebサイト、ブログも構築
  • 「VARS」のライブを観に来てね!https://vasofatum.jp/live/

VBAで自動バックアップ

元のファイル(ブック)と同じフォルダに「BackUp」というフォルダを自動で作り、その中にバックアップをとります。

元のファイル(ブック)と同じフォルダに「BackUp」というフォルダを自動で作り、その中にバックアップをとります。

コードは「ThisWorkbook」の中の「BeforeClose」の部分に書きます。

コードは「ThisWorkbook」の中の「BeforeClose」の部分に書きます。

VBAは以下のとおり。

  1. 同じフォルダ内に「BackUp」というフォルダが存在するか?しない場合は作成。
  2. バックアップと差がないようにブックを上書き保存。
  3. ブックの名前に今の日付と時間を足して名前を付けて保存。

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」というフォルダが出来ています♪

ブックを閉じてみたら、同じフォルダ内に「BackUp」というフォルダが出来ています♪

そして、バックアップファイルもちゃんと出来ています♪

そして、バックアップファイルもちゃんと出来ています♪

これで完成です!

自動化できるものは自動化していきます♪

-Excel
-, , ,