VBAマクロが実行できない

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 ドライブにある場合、以下のフォルダにインストールされます。

32bit OS の場合
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ドライブにインストールされている場合です。)

  1. \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0 キー 文字列項目[] で、値[Visual Basic For Applications]

  2. \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\9 キー 文字列項目[] で、値[] 


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


  4. \HEY_CLASSES_ROOT\TypeLib\{000204EF-0000-0000-C000-000000000046}\4.0\FLAGS キー 文字列項目[] で、値[0]

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