access応用・ツール・実例 PR

Accessでバックアップを自動作成するVBA(mdb / accdbを日付付き保存)

記事内に商品プロモーションを含む場合があります

導入文

Accessで業務用データベースを運用していると、

  • 誤ってデータを削除してしまった

  • VBAの修正でファイルが壊れた

  • 予期せぬエラーで開けなくなった

といったトラブルが発生することがあります。

こうした事故に備えるために最も重要なのが、
データベースのバックアップを自動で作成する仕組みです。

この記事では、
Access VBAを使って mdb / accdb ファイルを日付付きで自動バックアップする方法 を、初心者の方にも分かりやすく解説します。

この記事でわかること

  • AccessファイルをVBAで自動バックアップする方法

  • 日付付きで保存する方法

  • 上書きを防ぐ仕組み

  • 実務で使えるサンプルコード

  • 運用時の注意点


バックアップを自動化する必要性

手動でバックアップを取る運用では、

  • 忘れる

  • タイミングがバラバラ

  • トラブル後では遅い

という問題があります。

VBAで自動化すれば、

  • ボタン1クリックでバックアップ

  • 起動時に自動保存

  • 毎日同じ形式で保存

といった安定した運用が可能になります。

バックアップの基本方針

今回作成するバックアップの仕様は以下です。

  • 元ファイル:現在開いているAccessファイル

  • 保存先:指定フォルダ

  • ファイル名:日付付き

  • 例:MyDatabase_20260131.accdb

現在のデータベースパスを取得する

まず、現在開いているAccessファイルのパスを取得します。

Dim dbPath As String
dbPath = CurrentDb.Name

これで以下のような値が取得できます。

C:\Data\MyDatabase.accdb

保存先フォルダを指定する

バックアップ先フォルダを指定します。

Dim backupFolder As String
backupFolder = “C:\Backup\”

日付付きファイル名を作成する

Dim backupFile As String

backupFile = backupFolder & _
“MyDatabase_” & Format(Date, “yyyymmdd”) & “.accdb”

ファイルをコピーしてバックアップする

VBAでファイルコピーを行います。

FileCopy dbPath, backupFile

完成コード(そのまま使える)

以下が完成形です。

Sub AutoBackupAccessFile()

Dim dbPath As String
Dim backupFolder As String
Dim backupFile As String

dbPath = CurrentDb.Name
backupFolder = “C:\Backup\”

backupFile = backupFolder & _
“MyDatabase_” & Format(Date, “yyyymmdd”) & “.accdb”

FileCopy dbPath, backupFile

MsgBox “バックアップが完了しました。” & vbCrLf & backupFile

End Sub

上書き防止(同じ日付がある場合)

同じ日に複数回実行すると上書きされる可能性があります。
これを防ぐには、時刻も付けます。

backupFile = backupFolder & _
“MyDatabase_” & Format(Now, “yyyymmdd_hhnnss”) & “.accdb”

例:

MyDatabase_20260131_153045.accdb

起動時に自動バックアップする方法

起動時に自動実行したい場合は、
「起動フォーム」の OnLoad イベントに処理を記述します。

Private Sub Form_Load()
Call AutoBackupAccessFile
End Sub

実務での運用例

おすすめ運用:

  • 起動時に自動バックアップ

  • 1日1回のみ実行

  • 30日分だけ残す

  • 古いバックアップは削除

よくあるエラーと注意点

フォルダが存在しない

→ エラーになります
事前にフォルダ作成が必要です。

Accessを開いたままコピーできる?

→ 通常は可能ですが、ネットワーク環境では失敗することがあります。

ネットワークドライブ

→ 書き込み権限に注意

バックアップ時にエラー処理を追加する(安全版)

Sub AutoBackupAccessFile()

On Error GoTo Err_Handler

Dim dbPath As String
Dim backupFolder As String
Dim backupFile As String

dbPath = CurrentDb.Name
backupFolder = “C:\Backup\”

backupFile = backupFolder & _
“MyDatabase_” & Format(Now, “yyyymmdd_hhnnss”) & “.accdb”

FileCopy dbPath, backupFile

MsgBox “バックアップが完了しました。”
Exit Sub

Err_Handler:
MsgBox “バックアップ中にエラーが発生しました。”
End Sub

内部リンクにおすすめの記事

この記事と関連性が高い内部リンク例:

  • Access VBAエラー対策チェックリスト

  • Access VBAでよくあるトラブルと解決方法まとめ

  • Access 64bitでVBAが動かない時のチェックリスト

    まとめ

    Accessでバックアップを自動化することで、

    • データ破損リスクを大幅に減らせる

    • 誤操作からすぐ復旧できる

    • 安定した業務運用が可能

    になります。

    Accessを実務で使う場合は、
    必ず自動バックアップ機能を組み込むことをおすすめします。