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クラスモジュールで記述するほうが確実なようである。