こんにちは、なかぜんです。
Accessを使っていると、こんなお悩みありませんか?
「ファイルサイズがどんどん大きくなって、開くのも重い…」
「まだデータはそんなに入っていないのに、なぜ?」
実はこれ、Accessではよくある悩みなんです。でもご安心ください!
この記事では、Access初心者~中級者向けに、ファイルサイズを抑えるための最適化方法をやさしく解説します。VBAを使った自動化テクニックもご紹介しますよ!
Accessファイルが肥大化する原因
不要なデータの蓄積
テーブルの削除やレコードの更新を繰り返すと、Accessの内部に「ゴミデータ」がたまり、サイズが膨らみます。
一時オブジェクトの残留
フォームやレポートのプレビュー、クエリの実行などでも、一時的な情報が残ってしまいます。
基本の対策:手動で「最適化」
Accessには「データベースの最適化/修復」という便利な機能があります。
手動の手順
- Accessファイルを閉じる
- Access本体を起動し、メニュー → 「データベース」ー「データベースの最適化/修復」を選択
これだけで、ファイルサイズがグッと軽くなることがあります。
VBAで自動最適化する方法
毎回手動は面倒…という方のために、VBAで自動化する方法もあります。
VBAコード例(別ファイルで最適化)
Public Sub 最適化実行()
Dim strSource As String
Dim strTemp As String
strSource = CurrentDb.Name
strTemp = Left(strSource, Len(strSource) - 6) & "_temp.accdb"
DBEngine.CompactDatabase strSource, strTemp
Kill strSource
Name strTemp As strSource
MsgBox "最適化が完了しました!", vbInformation
End Sub
ポイント解説:
このコードは、現在のDBを一時ファイルにコンパクト化し、元のファイルと入れ替える仕組みです。Access自身を閉じてから、別のMDBでこの処理を行うのが安全です。
よくある注意点
- 共有中はNG: 複数人が同時に使っているときに実行するとエラーになります。
- 事前バックアップ推奨: 万一に備えて、バックアップを取ってから実行しましょう。
- 起動DBから実行: 自分自身のファイルを最適化するには、別のAccessファイルから処理を呼び出す必要があります。
中級者向けの応用テクニック
起動専用ファイルを使って自動最適化
AccessファイルA(業務本体)をAccessファイルB(起動用)から起動し、終了時にB側で最適化を実行する構成にすることで、業務に支障なく自動で最適化できます。
定期最適化バッチ
WindowsタスクスケジューラとVBAを組み合わせて、週1回などの自動最適化も可能です。
まとめ:定期的な最適化で快適なAccessライフを!
Accessファイルのサイズが大きくなる原因と、その対処法(手動・自動)の両方を学びましたね。
特に業務用のAccessファイルでは、安定性と軽さを保つためにも「最適化」はとても大事です。
ぜひ、今回ご紹介した手法を取り入れて、「軽くて快適なAccessライフ」を目指してみてください!
次のステップ:こんな記事もおすすめ!
それではまた、次回の記事でお会いしましょう。
Access大好きブロガーのなかぜんでした!
