AccessでActiveX-DLLを使う

Accessは、VBAを利用することにより、業務ソフトを作成する開発環境として便利に使える。
VBAと、VB6は互換性が高く、双方のツールもいいとこ取りで活用できます。
Accessは、access95から、クラスモジュールが利用できる。出来る限りオブジェクト指向で記述しましょう。現在の利用環境は、ACCESS2000〜2003が無難なところでしょう。2007は利用していませんのであしからず。

クラスモジュールのみのMDBファイルをライブラリファイルとして作成し、参照設定したいところですが
残念ながら、参照することは出来ません。

同じクラスモジュールのソースファイルを、VB6のActiveX-DLLで、コンパイルし、Accessから参照設定
すると、Accessのクラスモジュールと同じ状況で利用・参照することが出来ます。

mdbファイルのクラスが優先参照されるようなので、モジュール内に同じ名称のクラスが存在する限り、
mdbファイル内のモジュールのクラスが呼び出されます。

VB6のActiveX-DLLを参照した状態で、モジュールの名称を変更してみましょう。
cls001 -> zcls001のように、一時的に名前を変更することで、ActiveX-DLLのクラスを参照することが出来ます。

デバッグ中、または現場で、一時的に切り替えるのに便利です。
(※混乱するので最後の手段にしてください。)

activeX-DLLに含むクラスは、Accessの実行環境に依存しないクラスモジュールにする必要がある。

Accessは、MDIアプリであるので、ウィンドウハンドルの取得方法やAccess独特の機能など、
Microsoft Access X.XX Object Libraryに依存しなければ利用できない場合がある。

activeX-DLL側でMicrosoft Access X.XX Object Libraryを参照するとACCESSのプロセスが残り
次回の起動が出来なくなる現象が起こる。

Microsoft Access X.XX Object Libraryに依存するような機能は、MDBクラスモジュールで記述するほうが確実なようである。

実行環境に依存しないactiveX-DLLを作成することにより、VBA、VB6をTDDで開発する基礎整備ができる