スポンサーリンク

Accessデータを守る!定期的なバックアップの自動化方法

スポンサーリンク
Access
スポンサーリンク

こんにちは、なかぜんです。
「うっかりファイルを上書きしてしまった…」「パソコンが突然故障してデータが消えた…」そんな経験、ありませんか?
Accessで大切なデータを扱うなら、定期的なバックアップは必須です。
今回は、初心者の方でもできる「自動でバックアップする方法」をやさしく解説します。

スポンサーリンク

1. なぜバックアップが必要なの?

Accessは簡単に使えるデータベースですが、ひとつのファイル(.accdb)にすべてのデータが集約されています。
つまり、その1ファイルに何かあればすべてが失われるリスクがあるということ。
たとえば次のようなケースです:

  • 誤って上書き保存
  • ネットワークドライブの不具合
  • OSやAccessのクラッシュ

だからこそ、日々の業務において「定期的にバックアップを取る仕組み」を作ることが重要です。

2. バックアップの基本方法

● 手動でコピーする方法

最もシンプルな方法は、.accdbファイルをエクスプローラーでコピー&ペーストすることです。
しかし毎日やるのは面倒ですよね。

● VBAで自動バックアップ

そこでおすすめなのが、VBA(マクロ)を使った自動バックアップです。
以下のコードを「標準モジュール」に貼り付けて使います。

'===== バックアップ用VBA =====
Public Sub BackupDatabase()
    Dim fs As Object
    Dim sourceFile As String
    Dim backupFile As String
    Dim backupFolder As String

    ' バックアップ先フォルダ(例:C:\Backup)
    backupFolder = "C:\Backup\"
    If Right(backupFolder, 1) <> "\" Then backupFolder = backupFolder & "\"

    ' バックアップ元ファイル
    sourceFile = CurrentDb.Name

    ' バックアップファイル名に日付を付与
    backupFile = backupFolder & "Backup_" & Format(Now, "yyyymmdd_hhnnss") & ".accdb"

    ' ファイルコピー処理
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CopyFile sourceFile, backupFile

    MsgBox "バックアップ完了!" & vbCrLf & backupFile, vbInformation
End Sub

※解説:
・バックアップ先のフォルダ(C:\Backup)は任意に変更可能です。
・ファイル名に日付と時刻を付けることで、過去の履歴も残せます。

3. 実行のタイミングを工夫しよう

このバックアップマクロは次のようなタイミングで実行するのが効果的です:

  • アプリケーション起動時(AutoExecマクロに登録)
  • フォームを開いたとき
  • 「バックアップ」ボタンをフォームに追加して任意で実行

4. よくある注意点とミス

  • バックアップ先フォルダが存在しないとエラーになります。→事前にフォルダを作成しておきましょう。
  • ネットワーク上の保存先は通信エラーに注意。
  • 上書き防止のため、ファイル名には必ず日付や時間をつけましょう。

5. 応用ポイント:定期タスク化やバッチ連携

もう一歩進んで、Windowsタスクスケジューラやバッチファイルと連携させれば、Accessを開かなくてもバックアップできます。
また、複数のファイルを一括でバックアップしたい場合は、VBAで複数ファイルをループ処理することも可能です。

例:他のファイルもまとめてバックアップ

'フォルダ内の全.accdbファイルをバックアップ
Public Sub BackupAllAccessFiles()
    Dim folderPath As String
    Dim fileName As String
    Dim fs As Object
    Dim fso As Object

    folderPath = "C:\Data\"
    Set fso = CreateObject("Scripting.FileSystemObject")
    fileName = Dir(folderPath & "*.accdb")

    Do While fileName <> ""
        fso.CopyFile folderPath & fileName, "C:\Backup\" & fileName
        fileName = Dir
    Loop

    MsgBox "すべてのファイルをバックアップしました!", vbInformation
End Sub

6. まとめ:データ保護の第一歩としての自動バックアップ

今回は、Accessで大切なデータを守るための自動バックアップの基本をお届けしました。
手動でのコピーも大切ですが、日常的にミスなく運用するにはやはりVBAでの自動化が便利です。

次のステップとしては:

  • バックアップ先をクラウドに設定する(OneDriveやGoogle Drive)
  • 差分バックアップや世代管理も考慮する
  • 復元のテストも定期的に行う

大事なデータを「守る仕組み」は、まさに仕事の土台。
ぜひこの記事を参考に、バックアップ環境を整えてみてくださいね。