さて、AccessのMDE形式で保存したコードを作成する場合の注意点がある。Access2003で、それ以降は変わったか確認していないが・・。

共通モジュールを作るなら、折角だからClassモジュールにしておきたいが、一般的なクラスモジュールの利用方法はできない。
どういうことかというと、Classモジュールには Instancing というプロパティがある。値は
・1- Private
・2- PublicNotCreatable
のどちらかを設定できる。いや、この2つのどちらかしか設定できないのだ。


1- Privateを選択する

該当するMDEファイル内の Private クラスとなる。つまり、このクラスには直接外部からアクセスすることはできないし、オブジェクトブラウザにも出てこない。


2- PublicNotCreatableを選択する

オブジェクトブラウザには表示される。しかし、該当するMDEファイル内でインスタンスを生成することはできるが、外部ファイルからクラスを生成できない。


そう、せいぜい「Staticなものを作ったから利用して」という用途くらいにしか利用できないのだ。標準モジュールでラップするという手を使えば外部からもコントロールできるはずなので、関数名を長ったらしくして「それ」と分かるようにする等の手で実現は可能だろう。

しかし、もう少しいいやり方がないかな、と模索してみたい。アレを試そうか、というのは、あるので、試したらまた書くかも知れない。