現在オフラインです。再接続するためにインターネットの接続を待っています

[OFF2003] [BUG] 適切でない Microsoft Forms 2.0 Object Library への参照を使用するとエラー メッセージ "メソッドへアクセスに失敗しました。" が表示される

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

現象
Microsoft Forms 2.0 Object Library への参照を含む Visual Studio .NET プロジェクトで、以下のようなエラー メッセージが表示されることがあります。
System.MethodAccessException: "メソッドへアクセスに失敗しました。"
原因
[参照の追加] ダイアログ ボックスを使用して Microsoft Forms 2.0 Object Library への参照を追加すると、[Microsoft Forms 2.0 Object Library] に 2 つのエントリが表示される場合があります。これらのエントリはどちらも FM20.dll ファイルを参照します。

[Microsoft Forms 2.0 Object Library] の 2 つのエントリのうち、プライマリ相互運用機能アセンブリ (PIA) 参照である最初のエントリを選択する必要があります。2 番目のエントリを選択すると、アプリケーションが予期したとおりに動作しないことがあります。
解決方法
この問題を解決するには、次の手順を実行します。
  1. ソリューション エクスプローラで、[参照設定] の下の [MSForms] を右クリックし、[削除] をクリックします。
  2. ソリューション エクスプローラで、[参照設定] を右クリックし、[参照の追加] をクリックします。

    [参照の追加] ダイアログ ボックスが表示されます。
  3. [参照の追加] ダイアログ ボックスで、[COM] タブをクリックします。
  4. コンポーネントの一覧で、[Microsoft Forms 2.0 Object Library] という名前の最初のエントリをクリックします。

    : このエントリは PIA バージョンである必要があります。[参照の追加] ダイアログ ボックスに表示されている [Microsoft Forms 2.0 Object Library] のエントリが 1 つのみの場合、このエントリは PIA バージョンではないため、まず Microsoft Office System 2003 CD-ROM から PIA をインストールする必要があります。
  5. [選択] をクリックし、選択されたコンポーネントの一覧にエントリを追加します。
  6. [OK] をクリックして [参照の追加] ダイアログ ボックスを閉じます。
  7. ソリューション エクスプローラで、手順 5. で追加した MSForms 参照をクリックします。"ローカル コピー" プロパティが False に設定され、"パス" プロパティが PIA を指していることを確認します (「詳細」参照)。
  8. アプリケーション フォルダにある Obj フォルダから古い Interop.MSForms.dll を削除します。
詳細
PIA バージョンの Microsoft Forms 2.0 Object Library への参照を使用すると、ソリューション エクスプローラに MSForms 参照の以下のプロパティが表示されます。
  • ローカル コピー: False
  • パス: C:\WINDOWS\assembly\GAC\Microsoft.Vbe.Interop.Forms\11.0.0.0__71e9bce111e9429c\Microsoft.Vbe.Interop.Forms.dll
"パス" プロパティがグローバル アセンブリ キャッシュ (GAC) 内のフォルダを指している場合は、適切な (PIA) 参照を使用しています。

Microsoft Forms 2.0 Object Library への参照が適切でない場合 (または PIA がインストールされていない場合)、MSForms のプロパティは以下のようになります。
  • ローカル コピー: True
  • パス: C:\プロジェクト フォルダ\obj\Interop.MSForms.dll
Visual Studio .NET によって新しい相互運用機能アセンブリ (IA) が作成され、プロジェクト内のフォルダにコピーされる場合は、適切でないアセンブリが使用されています。

ソリューションで適切でない MSForms 参照が使用されている場合、このライブラリからオブジェクトを使用すると問題が発生することがあります。たとえば、Visual Studio Tools for the Microsoft Office System を使用して作成された Excel ブック プロジェクトで FindControl 関数を使用すると、問題が発生する可能性があります (通常、ワークシートで CommandButton コントロールの Click イベントをキャプチャする際にこの操作を行うことがあります)。ソリューションで適切でない MSForms 参照が使用されている場合、コードではエラーが発生していないように見えますが、ユーザーがワークシートでボタンをクリックしても、CommandButton コントロールの Click イベントが起動されません。CommandButton オブジェクトを割り当てる際に例外ハンドラを使用すると、「現象」に記載されたエラー メッセージが表示されます。
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 824009 (最終更新日 2003-09-17) を基に作成したものです。
プロパティ

文書番号:824009 - 最終更新日: 10/30/2003 00:56:58 - リビジョン: 1.1

  • Microsoft Visual Studio .NET 2003 Professional Edition
  • Microsoft Office Professional Edition 2003
  • Microsoft Visual Studio Tools for the Microsoft Office System
  • kberrmsg kbbug kbpia kbnofix KB824009
フィードバック