Excel VBAで発生する「実行時エラー '429': ActiveXコンポーネントはオブジェクトを作成できません」の解決方法

intermediate📊 Microsoft Excel2026-05-26| Windows 10/11, Microsoft Excel 2016/2019/2021/365 (32ビットおよび64ビット)

Error Message

Run-time error '429': ActiveX component can't create object
#vba#activex#com#実行時エラー#レジストリ

エラーメッセージ

ExcelマクロやVBAを使用している際に、次のようなポップアップが表示されることがあります。

Run-time error '429': 
ActiveX component can't create object

このエラーは通常、コードがCOMオブジェクトや外部アプリケーション(Outlook、Word、FileSystemObjectなど)のインスタンスを作成しようとした際に、Windowsオペレーティングシステムがそのコンポーネントを見つけられない、またはインスタンス化できない場合に発生します。

主な原因

エラー 429 がコードの入力ミスによって発生することは稀で、ほとんどの場合はVBAとWindowsレジストリ間の設定の問題です。主な原因は以下の通りです。

  • 必要なDLLまたはOCXファイルがWindowsに登録されていない。
  • VBAの参照設定リストに不足しているライブラリがある。
  • 32ビット版と64ビット版Officeのバージョンの不一致。
  • Officeのインストールまたは特定のActiveXコンポーネントの破損。
  • コードを実行しているマシンに対象のアプリケーション(Outlookなど)がインストールされていない。

ステップ 1: 失敗している行を特定する

まず、エラーが表示されたらデバッグをクリックしてください。VBAが失敗の原因となっている行をハイライトします。通常、以下のような行のいずれかです。

' シナリオ A: 遅延バインディング
Set objFSO = CreateObject("Scripting.FileSystemObject")

' シナリオ B: 参照設定(事前バインディング)
Set objOutlook = New Outlook.Application

CreateObjectでエラーが発生する場合、Windowsはレジストリ内のプログラムID(ProgID)を見つけることができていません。Newで発生する場合は、ライブラリの参照設定に問題があります。

ステップ 2: コンポーネントを手動で登録する

Scripting.FileSystemObjectのような標準コンポーネントやカスタムDLLを使用している場合、基となるファイルを再登録する必要があるかもしれません。これは、ソフトウェアが最近更新された、または移動された環境での一般的な修正方法です。

  • コマンドプロンプトを管理者として開きます。
  • 64ビット版Windowsで一般的な32ビットコンポーネントを使用する場合は、次のコマンドを入力します。
regsvr32.exe C:\Windows\SysWOW64\scrrun.dll

64ビットコンポーネント、または32ビットシステムの場合:

regsvr32.exe C:\Windows\System32\scrrun.dll

注: scrrun.dll を、使用しようとしている特定のDLL(DAOの場合は dao360.dll など)に置き換えてください。

ステップ 3: VBAの参照設定を確認する

「参照設定(事前バインディング)」(Dim app as Outlook.Applicationのように特定の型を宣言する方法)を使用している場合、VBAにはライブラリファイル(.tlb、.olb、または.dll)への有効な参照が必要です。

  • VBAエディタで、ツール > 参照設定に移動します。
  • **参照不可: [ライブラリ名]**と表示されている項目を探します。
  • 参照不可の項目がある場合は、チェックを外します。
  • 下にスクロールして、現在システムにインストールされているそのライブラリの正しいバージョンを見つけ、チェックを入れます。
  • OKをクリックし、再度コードを実行してみてください。

ステップ 4: 32ビットと64ビットの競合に対処する

これは、古いバージョンのOfficeから64ビット版のOffice 365に移行する開発者にとって頻繁に発生する悩みです。一部のActiveXコンポーネント(Common Controlsの mscomctl.ocx など)は、32ビット版のExcelでしか動作しません。

コードが32ビットのActiveXコントロールに依存している場合、64ビット版のExcel環境ではエラー 429 が発生します。この場合、2つの選択肢があります。

  • Officeを32ビット版にダウングレードする(レガシーな企業向けアプリに推奨)。
  • 64ビット互換の代替手段を使用するようにコードを更新する(例: Win64 API宣言や組み込みのUserFormコントロールの使用)。

ステップ 5: /regserver を使用してOfficeを修復する

Excel自体が他のOfficeアプリ(WordやOutlookなど)との通信に苦労している場合、フル再インストールを行わずにExcelにレジストリキーを強制的に再書き込みさせることができます。

  • すべてのOfficeアプリケーションを閉じます。
  • Win + R を押して「ファイル名を指定して実行」ダイアログを開きます。
  • 次のように入力してEnterキーを押します。
excel.exe /regserver

Excelが登録をリセットする間、画面が一瞬ちらつくことがあります。これにより、ExcelとWord/Outlook間の自動化エラーが解消されることがよくあります。

検証手順

修正を確認するには、新しいモジュールを作成してこのテストスクリプトを実行してください。これは、エラー 429 の最も一般的な原因である FileSystemObject の作成を試みます。

Sub TestActiveXFix()
    On Error GoTo ErrorHandler
    Dim fso As Object
    
    ' オブジェクトの作成を試行
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    MsgBox "Success! ActiveX component created successfully.", vbInformation
    Set fso = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Fix failed. Error " & Err.Number & ": " & Err.Description, vbCritical
End Sub

このスクリプトが実行され「Success」メッセージが表示されれば、コアスクリプティングライブラリのシステムActiveX登録は機能しています。

プロのヒント

  • 配布には遅延バインディングを使用する: Excelファイルを他のユーザーと共有する場合は、参照設定を追加する代わりに CreateObject("Library.Class") を使用してください。これにより、ソフトウェアのバージョンが異なるマシンでの「参照不可」エラーを回避できます。
  • アクセス権限を確認する: エラー 429 は、ユーザーが特定のDLLファイルまたはレジストリキーへのアクセス権限を持っていないために発生することがあります。ユーザーが C:\Windows\System32 に対して標準的なユーザー権限を持っていることを確認してください。
  • ウイルス対策ソフトによるブロック: 一部の強力なウイルス対策設定では、スクリプティングオブジェクト(特に WScript.ShellFileSystemObject)の作成がブロックされることがあります。エラーが解消されない場合は、セキュリティログを確認してください。

Related Error Notes