Q.
Windows7にて、Bricscad Pro を使っています。
VBAマクロを作成し、実行したところ、
File not found: VBA6.dll
というメッセージが表示され、実行できません。 外部のDLLやOCXなどを参照しない、VBAの機能のみ使ったマクロですが、 実行させるにはどうすればいいのでしょうか?
A.
Bricscad のインストーラで VBA関連のモジュールをインストールするときに、 一部の環境で、既に VBA関連のモジュールがインストール済みと誤認識し、 レジストリ登録がされない場合があります。
現在、確認されている環境は以下のなります。 - Windows7 に MicrosoftOffice2010 がインストールされている環境です。
この場合、VBAの統合環境などは起動するのですが、実際にVBAマクロを実行したとき、 本来、参照すべきモジュール VBE6.dll とは別のモジュールを参照してしまい、エラーが表示されます。 (メッセージでは VBA6.dll と表示されていますが、 実際に参照するファイルは VBE6.dll です。)
対応方法としては、 VBAの関連モジュールは、インストーラにてインストールされていますので、インストールファイルを確認の上、VBAの情報をレジストリに登録すれば、VBAマクロを起動することができます。 ただし、 正しくVBAマクロが起動できるのは、新しく作成したVBAプロジェクト(DVBファイル)となります。 一度、間違った状態で作成された、VBAプロジェクト(DVBファイル)では、正しい参照情報もリストアップされますが、間違った参照を解除し、新しい参照を設定することができません。 そのため、間違った状態で作成されたVBAプロジェクトは、ソースなどをエキスポートした後、 プロジェクトを再作成し、エクスポートしたソースをインポートしていただく必要があります。
VBAの情報のレジストリの登録方法は以下のようになります。
VBA関連モジュールの確認 VBAの関連モジュールは、OS などが C ドライブにある場合、以下のフォルダにインストールされます。
C:\Program Files\Common Files\microsoft shared\VBA\VBA6\
64bit OS の場合
C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\
上記フォルダに VBE6.dll があることを確認してください。
レジストリへの登録 上記で確認したモジュールのパスを以下のレジストリキーに登録してください。 (以下は 32bitOS で Cドライブにインストールされている場合です。)
- \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0 キー 文字列項目[] で、値[Visual Basic For Applications]
- \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\9 キー 文字列項目[] で、値[]

- \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\9\win32 キー 文字列項目[] で、値[C:\Program Files\Common Files\microsoft shared\VBA\VBA6\VBE6.DLL]
- \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\FLAGS キー 文字列項目[] で、値[0]
- \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\HELPDIR キー 文字列項目[] で、値[C:\Program Files\Common Files\microsoft shared\VBA\VBA6\]

|