クラスがオートメーションをサポートしていません (エラー 430)

オートメーション インターフェイスはすべてのオブジェクトで公開されているわけではありません。 このエラーの原因と解決策を以下に示します。

  • GetObject 関数または CreateObject 関数の呼び出しで指定されたクラスが見つかったが、そのクラスでプログラミング インターフェイスが公開されていない。

    オブジェクトがオートメーションに対して公開されていない場合、そのオブジェクトの動作を制御するコードは記述できません。 オブジェクトを作成したアプリケーションのドキュメントを参照し、このクラスでのオートメーションの使用に関する制限事項を確認してください。

  • プロジェクトを .dll から .exe に変更したか, .exe から .dll に変更した。 たとえば、.dll サーバーが既にコンパイルされて登録されている場合、プロジェクトの種類を .exe に変更して再コンパイルすると、.dll と .exe の両方が既にシステムに登録されていることになるため、一方のオブジェクトだけを作成することはできなくなります。 この問題を回避するには、古い .dll または .exe を手動で登録解除する必要があります。 この問題は、互換性があるプロジェクトを .exe から .dll に変更した場合に発生します。 互換性があるプロジェクトでは、CLSID が保持され、IID は保持されません。 CLSID が保持されるため、クラスはインプロセス サーバーとローカル サーバーの両方に登録されます。 インスタンスの作成時はインプロセス サーバーが使用されます。 インターフェイスのクエリが発生した場合、IID は不明なため .dll でサポートされません。

詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。