こんにちは、Access好きブロガーのなかぜんです。
「Accessって1ファイルで完結させるイメージが強いけど、大規模になってくると限界を感じる…」そんな悩み、ありませんか?
実はAccessでも、複数ファイルをうまく連携させることで、拡張性や保守性をグッと高めることができます。この記事では、実務でよく使われる「フロントエンド・バックエンド分離」や「共有モジュールの活用」など、Access上級者向けの連携構成を実例とともに解説します。
複数ファイル構成の基本
1. フロントエンドとバックエンドの分離
業務システムの安定運用には、データと画面(フォーム・レポート・VBA)を分けるのが定番です。
- バックエンド:テーブルのみを格納(例:
Data.accdb
) - フロントエンド:フォーム・レポート・クエリ・VBAなどを格納(例:
App_FE.accdb
)
フロントエンドからバックエンドにリンクテーブルを設定し、複数人が同時にデータを扱える構成にします。
実例:共有モジュールを使った複数ファイル連携
ここでは、複数のフロントエンドで共通機能を使いたい場合の実装例をご紹介します。
1. 構成イメージ
App_FE1.accdb
:得意先管理用App_FE2.accdb
:売上管理用CommonLib.accdb
:共通処理用(VBAモジュール格納)
2. VBAで共通モジュールを呼び出す仕組み
App_FE1やApp_FE2から、CommonLib
の関数を呼び出す例です。
' App_FE側から呼び出す処理
Public Sub CallSharedProcedure()
Dim acc As Access.Application
Set acc = New Access.Application
acc.OpenCurrentDatabase "C:\AccessSys\CommonLib.accdb"
acc.Run "SharedGreeting", "なかぜん"
acc.Quit
Set acc = Nothing
End Sub
このとき、CommonLib.accdb
側には次のようなプロシージャを用意しておきます:
' CommonLib.accdb 側
Public Function SharedGreeting(name As String)
MsgBox "こんにちは、" & name & "さん!共通処理を呼び出しました。", vbInformation
End Function
この方法を使えば、複数ファイルで共通処理を一元管理できます。
注意点とよくあるミス
- ファイルパスが固定されている:フルパスをベタ書きすると、配布後にエラーになることがあります。
→相対パスや設定テーブルを使って可変にしましょう。 - 他のAccessファイルを起動しっぱなし:インスタンスを明示的に破棄(
Set acc = Nothing
)しないと、ファイルが残ります。 - セキュリティ警告の解除漏れ:信頼された場所に配置することで、マクロ警告を回避できます。
応用ポイント:モジュールの自動コピーとバージョン管理
共有モジュールを更新した際、すべてのフロントエンドに手動で反映するのは大変ですよね。そんなときは、VBAで自動的にモジュールを上書きコピーする仕組みも検討しましょう。
' 共有モジュールを自動でコピーするサンプル
Public Sub CopyModule()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\CommonModules\mod_Shared.bas", CurrentProject.Path & "\mod_Shared.bas", True
Application.LoadFromText acModule, "mod_Shared", CurrentProject.Path & "\mod_Shared.bas"
End Sub
このようにすれば、管理性もアップします。
まとめ:Access連携構成で広がる活用の可能性
今回ご紹介したように、Accessでも複数ファイルを使った柔軟な構成が可能です。
- フロント・バックの分離で同時利用に強く
- 共有モジュールで開発効率アップ
- パス管理・自動コピーで保守性も高める
Accessは単一ファイルに閉じない運用も得意なんです。
次回は「Accessでの自動更新チェック機能」について紹介予定です。お楽しみに!
それでは、今日もAccessライフを楽しみましょう〜。
なかぜんでした!
¥2,992 (2025/05/24 20:57時点 | Amazon調べ)
