メインコンテンツまでスキップ

Visual Basic 6.0ランタイムファイルに関するエラー

Visual Basic 6.0で開発されたアプリケーションを実行しようとした際に、コンポーネントが登録されていないというエラーが発生することがあります。このエラーは、Visual Basic 6.0アプリケーションが使用しているランタイムファイルがシステムにインストールされていない場合や、正しく登録されていない場合に発生します。Viual Basic 6.0の主要なランタイムファイルはWindowsに既定でインストールされているので、シンプルなVisual Basic 6.0アプリケーションであれば、特に追加のランタイムファイルをインストールする必要はありません。しかし、追加のコントロールやライブラリを使用している場合は、必要なランタイムファイルが不足している可能性があります。

よく見かけるエラーメッセージ

以下のようなメッセージが表示される場合、Visual Basic 6.0のランタイムファイルが適切にインストールされていない可能性があります。

  • Component 'COMCTL32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid

    Visual Basic 6.0コンポーネントの不足(英語)

  • コンポーネント 'COMCTL32.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。

    Visual Basic 6.0コンポーネントの不足(日本語)

アプリケーションが利用しているコンポーネントによっては、他にも以下のようなメッセージが表示されることがあります。

  • Component 'MSCOMCTL.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • Component 'COMCT232.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • Component 'MSCOMCT2.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • Component 'COMCT332.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • Component 'MSFLXGRD.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • Component 'MSDATGRD.OCX' or one of its dependencies not correctly registered: a file is missing or invalid
  • コンポーネント 'MSCOMCTL.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。
  • コンポーネント 'COMCT232.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。
  • コンポーネント 'MSCOMCT2.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。
  • コンポーネント 'COMCT332.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。
  • コンポーネント 'MSFLXGRD.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。
  • コンポーネント 'MSDATGRD.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。

対処方法

表示されているOCXファイルが追加のランタイムファイルである場合、原則としてはアプリケーションの開発元からランタイムファイルとインストール手順を入手する必要があります。(Microsoftからの入手ではないことに注意してください。アプリケーションのランタイムファイルはアプリケーションの開発者が提供するものです。)

ただし、アプリケーションの開発元が既に解散していたり、連絡が取れないケースもあると思います。そのようなアプリケーションの使用を続けることはセキュリティ上のリスクもありますし、ビジネス上重要なアプリケーションであれば事業継続性にも影響を与える可能性がありますので、個人的には問題があると考えます。そうは言っても、アップグレードや移行のために旧アプリケーションやシステムを動作させる必要がある場合もあるでしょうし、どうしても必要な場合は以下のいずれかの方法を試してみるとよいかもしれません。

a. Visual Basic 6.0のインストールメディアを入手してインストールする

インストールメディアの入手方法はこちらのページでまとめています。

Visual Basic 6.0のランタイムファイルは、Visual Basic 6.0の1枚目のインストールメディアのパスX:\os\systemに含まれています。これをC:\windows\syswow64にコピーし、管理者権限で起動したコマンドプロンプトからregsvr32 <OCXファイル名>のコマンドでコンポーネント登録することで利用できるようになります。

例えば、「コンポーネント 'COMCTL32.OCX' 、またはその依存関係のひとつが適切に登録されていません。ファイルが存在しないか、あるいは不正です。」というエラーが表示されている場合は、以下のようにコマンドを実行します。

  1. Visual Basic 6.0のインストールメディアを開き、os\systemフォルダーを開きます。

    インストールメディアのランタイムファイルフォルダー

  2. COMCTL32.OCXファイルをC:\windows\syswow64フォルダーにコピーします。既にファイルが存在している場合はスキップしてください。

  3. 管理者権限でコマンドプロンプトを開き、以下のコマンドを実行します。

    C:\windows\syswow64\regsvr32.exe C:\windows\syswow64\COMCTL32.OCX

なお、もし32ビット版のWindowsを使用している場合はC:\windows\syswow64C:\windows\system32に置き換えてください。

b. Visual Basic 6.0のランタイムファイルを再頒布可能パッケージからインストールする

現在、MicrosoftからはVisual Basic 6.0のランタイムファイルをまとめた再頒布可能パッケージは公開されていません。Visual Basic 6.0の開発環境向けの更新プログラムがKB957924から入手できますので、こちらからランタイムファイルを展開して利用することは可能です。ただし、ライセンス条項では以下のようにVisual Basic 6.0のライセンスを取得していることが前提となっていることが明記されていますので注意してください。

注意 : Microsoft Corporation (以下「マイクロソフト」といいます) は、本追加ソフトウェアに関するライセンスをお客様に供与します。お客様は、マイクロソフト Visual Basic 6.0 ソフトウェアの有効なライセンス取得済みの複製 (以下「本ソフトウェア」といいます) ごとに、本追加物の複製 1 部を使用できます。本ソフトウェアのライセンスを取得していない場合は、本追加ソフトウェアを使用することはできません。本ソフトウェアのライセンス条項は、本追加ソフトウェアの使用にも適用されます。マイクロソフトは、本追加ソフトウェアに対し www.support.microsoft.com/common/international.aspx で説明されるサポート サービスを提供します。

ライセンスを持っている場合、以下の方法で展開して利用することができます。

  1. KB957924のページから更新プログラムのMSIファイル(VB60SP6-KB2708437-x86-JPN.msi)をダウンロードします。
  2. コマンドプロンプトを開き、以下のコマンドを実行します。
    msiexec.exe /a "%userprofile%\downloads\VB60SP6-KB2708437-x86-JPN.msi" targetdir="%temp%\VB60SP6-KB2708437-x86-JPN"
  3. しばらくするとインストーラーが起動します。最初に使用許諾契約書が表示されますので、内容を確認して同意します。 ライセンス条項
  4. インストールが進行しますのでしばらく待ちます。正常に終了したことが確認できたら完了ボタンをクリックします。インストーラーの起動時に/aオプションを指定しているので、実際には製品のインストールは行われずインストール先のフォルダーにファイルが展開される動作になります。 インストーラーの完了画面
  5. エクスプローラーで%temp%\VB60SP6-KB2708437-x86-JPN\systemフォルダーを開きます。ここに展開されたファイルがVisual Basic 6.0のランタイムファイルです。必要なランタイムファイルをC:\windows\syswow64フォルダーにコピーします。既にファイルが存在している場合、展開されたファイルの方がタイムスタンプが新しい場合は上書きしてください。
  6. 管理者権限でコマンドプロンプトを開き、以下のコマンドを実行してコンポーネント登録を行います。
    C:\windows\syswow64\regsvr32.exe C:\windows\syswow64\<OCXファイル名>

なお、もし32ビット版のWindowsを使用している場合はC:\windows\syswow64C:\windows\system32に置き換えてください。

c. Microsoft以外のWebサイトからインストーラーを入手する

VectorなどMicrosoft以外のWebサイトで配布されているVisual Basic 6.0ランタイムファイルをまとめたインストーラーは、ざっと確認した限りMicrosoftの署名がなく公式なものではないようです。不正なファイルが含まれていないかどうかも正しくインストールできるかどうかも分かりませんし、もしインストールするなら出所不明でソースコードも公開されていないフリーソフトを管理者権限で実行しようとしていると認識した上で、自己責任で行いましょう。

よく使われるランタイムライブラリとコントロール&クラス

よく使われるVisual Basic 6.0のランタイムライブラリとコントロール、クラスは以下の通りです。これらはWindowsに既定ではインストールされていませんので、アプリケーションで使用している場合は追加でインストールが必要になります。

comctl32.ocx: Microsoft Windows Common Controls 5.0 (SP2)

  • TabStrip
  • Toolbar
  • StatusBar
  • ProgressBar
  • TreeView
  • ListView
  • ImageList
  • Slider

mscomctl.ocx: Microsoft Windows Common Controls 6.0 (SP6)

  • TabStrip
  • Toolbar
  • StatusBar
  • ProgressBar
  • TreeView
  • ListView
  • ImageList
  • Slider
  • ImageCombo

comct232.ocx: Microsoft Windows Common Controls-2 5.0 (SP2)

  • Animation
  • UpDown

mscomct2.ocx: Microsoft Windows Common Controls-2 6.0 (SP6)

  • Animation
  • UpDown
  • MonthView
  • DTPicker
  • FlatScrollBar

comct332.ocx: Microsoft Windows Common Controls-3 6.0 (SP5)

  • CoolBar

msflxgrd.ocx: Microsoft FlexGrid Control 6.0 (SP6)

  • MSFlexGrid

msdatgrd.ocx: Microsoft DataGrid Control 6.0 (SP6)

  • DataGrid

msrdo20.dll: Microsoft Remote Data Object 2.0

  • RDO.rdoEngine
  • RDO.rdoEnvironment
  • RDO.rdoConnection

参考情報