2016年4月15日金曜日

Windows7 + VB6 で MSComctlLib を含むフォームのロードがコケる

大手電機メーカーのソフトウェアであっても製造の現場で安定して稼働しているシステムはいまだにVB6で作ったものだったりします。
今回もそんなVB6で構築したシステムのエンハンスで、.vbpファイルを開くとMSComctlLibを含むフォームのロードでエラーが出る状態だったため手っ取り早く対処します。

まずフォームをロードした時、VBがご丁寧に通知してくれるエラーログを確認します。

行 14: クラス MSComctlLib.Toolbar(コントロール Toolbar1) はロードされていません。
行 140: クラス MSComctlLib.ImageList(コントロール ImageList1) はロードされていません。
行 177: クラス MSComctlLib.StatusBar(コントロール StatusBar1) はロードされていません。

続いてcmd.exeを「管理者として実行...」して、以下の3行をコピー&ペーストです。
regsvr32 /u /s C:\Windows\System32\MSCOMCTL.OCX
regsvr32 /s C:\Windows\System32\MSCOMCTL.OCX
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe C:\Windows\system32\msdatsrc.tlb
あとはVB6 IDEのツールボックス上で右クリック⇒コンポーネントと進んで Microsoft Common Dialog Control 6.0 (SP6) をチェックして、 適用をクリックしてもエラーが出なければ・・・