PowerPointは、Excelチャートオブジェクトが埋め込まれているときに「アプリケーションを起動できない」エラーを表示します
-
25-09-2019 - |
質問
これは、ExcelワークシートまたはチャートがWordまたはPowerPointに埋め込まれている場合、非常に一般的な問題です。私はこの問題を単語とPowerPointの両方で見ており、それが思われる理由はExcelに添付されていることです。 com addinはc#(.net)で記述されています。エラーダイアログについては、添付の画像を参照してください。
私はアディンをデバッグし、非常に奇妙な行動を見つけました。 onconnection(...)、ondisconnection(...)などのメソッドは、コードにイベントハンドラーを追加するまで正常に動作します。 IEは、worksheet_sheetchange、selectionchange、またはExcelで利用可能な同様のイベントを処理します。単一のイベントハンドラー(コードにはいくつかありますが)を追加するとすぐに、WordとPowerPointは不平を言い、埋め込みオブジェクトをアクティブにしません。
インターネット上のいくつかの投稿では、人々はオフィス用のアンチウイルスアディンを削除するように求められています(私の場合はありません)。オブジェクト。
誰かがここで何が起こっているのかという考えを持っていますか?
2010年6月21日更新
イベントとComaddinsコレクションの変更の両方が、埋め込まれたオブジェクトがアクティブになったときに問題を引き起こすことがわかりました。 Excel :: application :: usercontrolプロパティを使用して、Excelが組み込み状態にあるかどうかを確認し、その後、任意のonconnection(...)およびondisconnection(...)コードをスキップしました。
イベントの問題に対する解決策の1つは、すべてのアプリケーションレベルのイベントをVBAコードに移動し、.NETに呼び出すことです。これにより、.NETコードからすべてのイベントハンドラーを削除します。
埋め込まれたオブジェクトが初期化に失敗する可能性のあるシナリオがさらに増える可能性があるため、COMの追加を無効にすることを選択します。
解決
この迷惑な問題を取り除くために私がしたことは次のとおりです。
.NETコードですべてのイベントハンドラーを削除し、Excel :: application :: worksheet_activate(...)イベントを処理する代わりにVBAアプリケーションイベントに依存します。 。 .NETイベントハンドラーは、どういうわけか状態を破壊しているようです。
Custom Paramのフラグを使用して、Onconnection(...)でAddinと相互作用するコードを無効にします。フラグの詳細については、次のリンクを参照してください。com addins詳細
Excel :: application :: usercontrolプロパティについて言及しましたが、場合によっては信頼できません。次のケースを考慮する必要があり、カスタムアレイPARAMはオンコネクション(...)が最も信頼性があります。
- Excelは独立したアプリケーションとして始まりました
- Excelは、他のアプリケーションで組み込みアプリとして開始されました
- excelは自動化を通じて開始されました。
Excelが埋め込まれたモードである場合、Addinを完全に無効にすることを好みました。それは、あなたがあなたのオンコネクションで実行しているコード(...)と、実行されたときに他のアプリケーションがそれにどのように応答するかによって異なります。この問題を解決するには、ポイント#1を実装する必要があります。
誰かがこれに対してより良い解決策を持っているなら、私に知らせてください:)