このページの対象: Windows 10 / 8.1 / 7
Windows 10 にて、古いソフトを使おうと思ったら以下のようなエラーが出てしまった。
- Component 'mscomctl.ocx' or one of its dependencies not correctly registered: a file is missing or invalid
- 和訳: コンポーネント 'mscomctl.ocx' またはその依存関係の1つが正しく登録されていません:ファイルが見つからないか無効です
要はツールを作動させるために必要な「mscomctl.ocx」が見つからないよ、と言っているのだ。結論から言ってしまうと、VB6 ランタイムをインストールすればこのエラーは解消する。
VB6 ランタイム のダウンロード
利用している OS が Windows 10 / 8.1 / 7 であれば、Vectorで配布されているものを使うのがよい。
- Visual Basic 6.0 SP6 ランタイムファイル : Vector
- XTRM Runtime : Vector
※ 通常は、上記どちらか一方でよいが、今回 (不足ファイルがmscomctl.ocx の場合) は XTRM Runtime の方が良い。
※ここで注意 (やや脱線)
- 検索エンジンで Visual Basic 6.0 SP6 ランタイム を検索すると、以下2つのダウンロードページが表示されることがある。
- Download Microsoft Visual Basic 6.0 コモン コントロール - Microsoft公式 ダウンロード
- Download Visual Basic 6.0 Service Pack 6:ランタイム再頒布可能パッケージ (vbrun60sp6.exe) - Microsoft公式 ダウンロード
- 64bit版 Windows 10 に試しにインストールしてみた結果
- コモン コントロールの方ではこのエラーは解決できなかった
- ランタイム再頒布可能パッケージの方はインストーラーが正常に動作しなかった。
という事で、Windows 10/8.1/7 であれば Vectorで配布されているものを使おう。
脱線おわり。
VB6 ランタイム のインストール手順
上記で紹介したファイルのうち、「Visual Basic 6.0 SP6 ランタイムファイル」は かなり古いインストーラーが起動するのでちょっとビックリする。
久々に見るものなので、ちょっと手順をメモしておく。
(TRM Runtime は比較的新しいインストーラーなので割愛)
以下、オールドユーザーにはかなり懐かしい手順と画面が展開される。
実際の手順
まず、ダウンロードしたファイルをダブルクリックする
ダウンロードしたファイルの解凍作業がはじまるので、解凍先のフォルダを指定し、「OK」を押す。
「vb6rtest」というフォルダが生成されているので開く。
▲クリックで拡大
フォルダ内に「setup.exe」というファイルが見つかるので、それをダブルクリックする。
UACが反応する。
▲クリックで拡大
PCに変更を与える許可が必要なので、「はい」を押す。
以下のセットアップウィザードが起動する (懐かしい)
▲クリックで拡大
この画面が表示されたら「OK」を押す。
インストール先の指定を行う。
▲クリックで拡大
インストール先を変更したい場合、図中緑の矢印のボタンで行う (通常は変更不要)
インストールを続行する場合は、図中赤の矢印のボタンを押す。
プログラムグループの選択を行う。
▲クリックで拡大
ここも特に変更する必要はない。
そのまま「継続」ボタンを押せばよい。
※「継続」を押すと実際にインストールがはじまる。
インストール完了後の画面
この画面が出れば、インストールは終了。
「OK」を押してセットアップウィザードを終了させる。
インストール終了後は念のためPCを再起動しておこう。
その他: mscomctl.ocx が同梱されている場合
ネット上に配布されているフリーツールの中には、(稀にだが) mscomctl.ocx が同梱されたツールも存在する。(例: PC自動化ソフト HiMacroEx )
この場合であれば、XTRM Runtime ではなくVisual Basic 6.0 SP6 ランタイムをインストールし、ツールに同梱されている mscomctl.ocx を regsvr32 することでもエラーを解消することができる。
regsvr32 の手順
- mscomctl.ocx をフォルダ「C:\Windows\SysWOW64」に設置する
- コマンドプロンプトまたは PowerShell を管理者権限で起動し、「regsvr32 C:\Windows\SysWOW64\mscomctl.ocx」と入力すればOK
- 上記は 64bit版 Windows の場合。
- 32bit版の場合、「regsvr32 C:\Windows\system32\mscomctl.ocx」と入力する
- ファイルが正常に登録できたら終了。
- この時のメッセージは「C:\Windows\SysWOW64\mscomctl.ocx の DllRegisterServer は成功しました。」となる
- 補足: エラーが出る場合
- VB6が正常にインストールされていないか、その他何かの手順が間違っている。
- regsvr32.exe にドラッグ&ドロップでファイルを登録する手順は、いつの間にか出来なくなっている
このページの情報は以上。
あとがき
過去、この系統のエラーには何度も出くわしているが、このブログ内には当時のメモがほとんど残っていないことに我ながら少し驚いた。
よく考えてみると私の場合、2012~3年頃までは Windows PC のセットアップをしょっちゅう行っていた。なので当時は「***.ocx が正しく登録されていないエラー」を見た瞬間に「あ、VB6ランタイムが入っていない or 正常動作していない」と判断できていた。
つまり、当時はわざわざメモを残しておくほどの価値もないエラーだったのだ。
ここ数年、PCのセットアップをほとんど行っていないこと、フリーツールを物色する事が少なくなってしまことなどが理由で、上記をすっかり忘れてしまっていた。いつの間にか、私のPCの使い方は大きく変わってしまっていた。なんかしみじみしてしまった。