こんにちは、なかぜんです。
Accessを使っていると、こんなトラブルに出会ったことはありませんか?
- 「ファイルが開かない」
- 「不明なエラーが出る」
- 「データが消えてしまった!?」
これ、もしかするとAccessファイルが壊れているのかもしれません。
でも大丈夫!今回は、Accessファイルが壊れたときの修復方法と、二度と壊さないための予防策をやさしく解説します。
Accessファイルが壊れる原因
まずは、なぜAccessファイルが壊れてしまうのかを知っておきましょう。
よくある原因
- ネットワーク越しの操作中に切断された
- 複数人が同時編集していた
- ファイルサイズが大きくなりすぎた
- 強制終了(電源OFFやエラー)
Accessは「ファイル単体」でデータもアプリも扱っているので、トラブルの影響を受けやすいのが特徴です。
Accessファイルの修復方法
1. Accessの「コンパクトと修復」機能を使う
Accessにはファイル修復用の便利な機能が用意されています。
- Accessを起動
- [ファイル] → [開く] から対象のファイルを選択
- 開くボタンの右側の▼をクリックし、「データベースの最適化と修復」を選ぶ
これで多くの軽微な破損は回復できます。
2. VBAから修復を自動化する
よくAccessを使う環境では、VBAで修復処理を自動化しておくのもオススメです。
Sub CompactAndRepair()
Dim app As Object
Set app = CreateObject("Access.Application")
app.CompactRepair _
SourceFile:="C:\Path\To\YourFile.accdb", _
DestinationFile:="C:\Path\To\RepairedFile.accdb", _
LogFile:=False
MsgBox "修復が完了しました!", vbInformation
End Sub
解説:
このコードは、外部からAccessファイルを修復して、新しいファイルとして保存します。ファイルが大きいときにも安心です。
修復できなかった場合の対処法
「データベースの最適化と修復」でも直らないときは、次のような方法を試してみましょう。
1. 新しい空のファイルにインポート
- 新しいAccessファイルを作成
- [外部データ] → [Access] を選び、元ファイルを指定
- テーブル・クエリ・フォームなどをインポート
これで内部構造の破損を回避できます。
2. バックアップから復旧
定期的にバックアップを取っていれば、それを使って復元するのが最も確実です。
Accessファイルが壊れないための予防策
1. 分割設計にする(FE/BE構成)
Accessは、データ(BackEnd)と画面(FrontEnd)を分けることで安全性が大幅に上がります。
- BackEnd:データだけを保存
- FrontEnd:フォームやクエリなどの操作部分
複数人で使う場合は、この構成が必須です。
2. 定期バックアップ
最低でも1日1回、VBAやタスクスケジューラを使って自動バックアップを取りましょう。
3. ファイルサイズを抑える
ファイルサイズが500MB以上になると危険信号。
こまめに「データベースの最適化と修復」を行いましょう。
よくあるミスと注意点
- 修復後のファイルを上書きしてしまい、復旧できなくなった
- ネットワーク越しの操作を続けていた
- VBAで自動修復処理を書いたけどエラー処理をしていなかった
特にVBAではエラー処理をしっかり入れておくことが大事です。
中級者向け:VBAで定期バックアップの仕組みを作る
Accessを閉じるタイミングで自動バックアップを取る方法の一例です。
Private Sub Form_Unload(Cancel As Integer)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim src As String
Dim dest As String
src = CurrentDb.Name
dest = "D:\Backup\" & Format(Now, "yyyymmdd_hhnnss") & "_backup.accdb"
fso.CopyFile src, dest
End Sub
解説:
フォームが閉じられるときに、現在のDBファイルをバックアップフォルダへコピーします。
まとめ:まずは「壊れない仕組み」を作ろう!
Accessファイルは便利だけど壊れやすい。だからこそ、予防がいちばん大切です。
- 困ったら「コンパクトと修復」
- 日々のバックアップを忘れずに!
- 中級者はVBAで仕組み化もおすすめ
次のステップとしては、分割データベースの構築やクラウドバックアップの導入なども検討してみてくださいね。
