1

ドキュメント/プレゼンテーションが閉じられているかどうかを追跡し、ドキュメント/プレゼンテーションを閉じる前にカスタムコードを実行するOfficeアドインをいくつか作成しました。

このコードはすべて、Wordアドインでは問題なく機能しますが、PowerPointアドインでは

"System.Runtime.InteropServices.COMException(0x80048240):プレゼンテーション(不明なメンバー):無効な要求。この操作はこのイベントハンドラーでは実行できません。"-PowerPointアプリケーションを閉じるときにエラーが発生しました。呼び出されているメソッドはpresentation.Close()です。

このメソッドは、リボンイベントハンドラーの一部として呼び出された場合は正常に機能しますが、アプリケーションのいずれかによって呼び出された場合は、偶数(、、PresentationCloseまたはPresentationBeforeClosePresentationCloseFinalを実行できませんpresentation.Close()

前述のように、Wordアドインには、この問題のない同一のコードがあります。2つの製品のイベント処理が異なることは知っていますが、PowerPointでアプリケーションがシャットダウンされているとき(またはプレゼンテーションが閉じられているとき)に問題が発生する理由を理解できません。

誰かが良いインプットを持って来ることを願っています。

4

2 に答える 2

0

非常によく似たものに出くわしました。PPT のバグなどを回避するために、現在のプレゼンテーションを閉じてから再度開く必要がありましたが、イベント ハンドラー内からプレゼンテーションを閉じることができませんでした (プレゼンテーションに属するイベントをまだ処理しているため、理にかなっていると思います)。それがきっかけ)。

イベントハンドラーにフォームをモードレスでロードさせることで、これを回避しました。これにより、イベント ハンドラー内のコードがイベント ハンドラーの End Sub に続くことができるため、イベント ハンドラーにいる必要はなくなります。

次に、フォームの初期化コードが現在のドキュメントを閉じ、フォームをアンロードします。

フォームを表示する必要がないため、ユーザーはこれを見ることはありません。

于 2013-01-13T20:36:09.573 に答える