Microsoft Accessデータベースで共通処理のライブラリを作成し、アプリケーションデータベースから参照設定で使用することがあります。
例として、ライブラリ(例:AppLib)側でクラスモジュールExampleClassを作成します。
アプリケーションデータベース側からライブラリデータバース側のクラスを参照できるようにするには、クラスモジュールのプロパティ定義でInstancingを『2 - PublicNotCreatable』にします。
さらに、クラスモジュールをインスタンス化するために標準モジュール(例:GetInstance)を用意し、それぞれのクラスごとにインスタンス化関数を作成します。
public Function ExampleClass() As ExampleClass Set ExampleClass = New ExampleClass End Function
アプリケーションデータベースでライブラリデータバースのクラスを利用するコードは下記になります。
Dim ClassExample As AppLib.ExampleClass : Set ClassExample = AppLib.GetInstance.ExampleClass() : Set ClassExample = Nothing End Function
また、ライブラリデータベース側の標準モジュール内に
Public ClassExample As New ExampleClass
ただ、インスタンス化せずに使用する場合は、クラスを参照する前に標準モジュール内の任意の関数を一度は呼び出しておく必要があります。
いきなり参照すると、最初の実行時にメソッドまたはデータメンバが見つかりませんというコンパイルエラーが発生します。
このエラーが厄介なのは、エラーになっても再実行すると今度はエラーなしで実行できてしまうところにあります。