導入文
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 64bitでVBAが動かない時のチェックリスト
リンクまとめ
Accessでバックアップを自動化することで、
-
データ破損リスクを大幅に減らせる
-
誤操作からすぐ復旧できる
-
安定した業務運用が可能
になります。
Accessを実務で使う場合は、
必ず自動バックアップ機能を組み込むことをおすすめします。 -