これは、ExcelワークシートまたはグラフがWordまたはPowerpointに埋め込まれている場合に非常に一般的な問題です。WordとPowerpointの両方でこの問題が発生しており、Excelに接続されているCOMアドインが原因であると思われます。COMアドインは、C#(.NET)で記述されています。エラーダイアログについては、添付の画像を参照してください。
アドインをデバッグしたところ、非常に奇妙な動作が見つかりました。COMアドインのOnConnection(...)、OnDisConnection(...)などのメソッドは、コードにイベントハンドラーを追加するまで正常に機能します。つまり、Worksheet_SheetChange、SelectionChange、またはExcelで使用可能な同様のイベントを処理します。イベントハンドラーを1つでも追加すると(コードには複数ありますが)、WordとPowerpointは文句を言い始め、埋め込みオブジェクトをアクティブ化しません。
インターネット上のいくつかの投稿では、オフィス用のアンチウイルスアドインを削除するように求められているため(私の場合はなし)、この問題は、ホストアプリがアクティブ化されたときに読み込まれるCOMアドインに関連していると思われます。オブジェクト。
2010年6月21日更新
イベントとComAddInsコレクションへの変更の両方が、埋め込みオブジェクトがアクティブ化されたときに問題を引き起こすことがわかりました。これで、Excel :: Application :: UserControlプロパティを使用して、Excelが埋め込み状態にあるかどうかを確認し、OnConnection(...)およびOnDisconnection(...)コードをスキップしました。
イベントの問題に対する1つの解決策は、すべてのアプリケーションレベルのイベントをVBAコードに移動し、.NETを呼び出すことです。これにより、.NETコードからすべてのイベントハンドラーが削除されます。
埋め込みオブジェクトが初期化に失敗する可能性があるシナリオがさらにある可能性があるため、COMアドインを無効にすることを選択します。つまり、OnConnection(...)メソッドとOnDisconnection(...)メソッドのコードを完全にスキップします。