たきるブログ

C#やOracleなどの情報を書いています。

【Windows】Windows7でComDlg32.ocxを動かす

Windows 7 環境下で、ExcelVBAにFileDialogオブジェクトを利用しようとするとエラーになってマクロが動かせなかった。
調べてみたら、64bit環境だとって言ってるけど、32bit環境(vmware player上)でもなるし、よくわからんが、解決方法を記そう!

  1. Microsoft Visual Basic 6.0 Service Pack 6 累積的な更新プログラムをダウンロードする。
  2. コマンドプロンプトで、以下のコマンドを実行し、msiの中身を展開する。
    msiexec /a D:\VB60SP6-KB2708437-x86-JPN.msi targetdir="D:\msi_expand" /qn
  3. 展開した中に、『SYSTEM\ComDlg32.OCX』があるので、『C:\Windows\SysWOW64』へコピーする。(管理者権限が必要)
  4. 管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行。
    regsvr32 C:\Windows\SysWOW64\ComDlg32.OCX

これで、VBA側のエラーはなくなるはず。
他にもエラーが発生するなら、参照できてないOCXを見つけ出して、同じことをすればいいと思う。

Windows 7 32bitだとSysWOW64ディレクトリは無いので、system32ディレクトリ下へファイルをコピーすればいいだろう。

ちなみに、不要になったりゴミだから消したいという場合は、以下の手順でファイルを削除する。

  1. 管理者権限でコマンドプロンプトを起動し、以下のコマンドを実行。 regsvr32 /u C:\Windows\SysWOW64\ComDlg32.OCX
  2. 『C:\Windows\SysWOW64\ComDlg32.OCX』を削除。