こんにちは、なかぜんです!
Accessを使って日々の業務をこなしていると、つい忘れがちなのが「バックアップ」。
「うっかり保存せずに閉じちゃった…」「気づいたらデータが消えてた…」なんて経験、ありませんか?
今回はそんな悩みを解決するために、「バックアップの自動化方法」をご紹介します。
VBAを使えば、初心者の方でも簡単に自動バックアップが実現できますよ。
1. バックアップを自動化するメリットとは?
- データ損失のリスクを大幅に軽減
- 手作業が不要になるので、ミス防止&時短に
- 定期バックアップで安心して業務に集中できる
Accessは便利ですが、万が一の障害に備えて、こまめなバックアップがとても大事。
それを「自動」でやってくれるなら、心強いですよね。
2. VBAを使って自動バックアップを実装しよう
基本のバックアップコード
Sub 自動バックアップ()
Dim fso As Object
Dim sourcePath As String
Dim backupPath As String
Dim fileName As String
' 現在のファイルパスを取得
sourcePath = CurrentDb.Name
fileName = "Backup_" & Format(Now, "yyyymmdd_hhnnss") & ".accdb"
' バックアップ先フォルダを指定(例:C:\DB_Backup)
backupPath = "C:\DB_Backup\"
' バックアップ先フォルダが存在しない場合は作成
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(backupPath) Then
fso.CreateFolder backupPath
End If
' ファイルをコピー
fso.CopyFile sourcePath, backupPath & fileName
MsgBox "バックアップ完了:" & backupPath & fileName, vbInformation
End Sub
このコードの解説
CurrentDb.Name
で現在のデータベースのファイルパスを取得Format(Now, "yyyymmdd_hhnnss")
で日付付きのファイル名にFileSystemObject
を使ってフォルダの存在確認&作成- 同名ファイルが作られないよう、日時付きでユニークに保存
3. フォームを開いた時に自動でバックアップする
上のコードを、「起動時に自動実行」させるには、メインフォームのForm_Load
イベントに次のように記述します。
Private Sub Form_Load()
Call 自動バックアップ
End Sub
こうすることで、フォームが開かれたタイミングで自動的にバックアップが取られるようになります。
4. 注意点とよくあるミス
- 保存先フォルダのパスが正しいか確認しましょう。
- 別のユーザーが開いている状態ではバックアップが失敗することがあります。
- ファイルが大きすぎる場合はコピーに時間がかかるため、タイミングに注意。
5. 応用:一定時間ごとにバックアップする
タイマーを使えば、例えば30分ごとにバックアップを取ることも可能です。
以下はフォームのTimer
イベントを利用する例です。
フォームの設定
Private Sub Form_Open(Cancel As Integer)
Me.TimerInterval = 1800000 ' 30分 = 1800000ミリ秒
End Sub
Private Sub Form_Timer()
Call 自動バックアップ
End Sub
これにより、フォームを開いている間は30分ごとにバックアップが実行されます。
6. まとめ:自動バックアップで安心&時短を実現!
Accessのバックアップは、意識していないとつい後回しになりがち。
でも今回ご紹介したVBAコードを使えば、自動化によって確実&安全にデータを守れます。
「VBAなんて難しそう…」と思っていた方も、これを機にぜひチャレンジしてみてくださいね!
慣れてきたら、ネットワーク共有フォルダに保存したり、エラー処理を追加するなど、より実践的な活用も目指せます。
それでは、なかぜんでした!
