私は現在解決できない問題を抱えています。 pptxでワークシートを取得すると、保存時にCOM-Exceptionsが取得されます。テストでは、SaveAs()またはSaveCopyAs()を実行しようとすると、プレゼンテーションがまだ完全にロードされていないためです。Powerpoint Interop:プレゼンテーションが完全に読み込まれたときを検出する方法
しかし、Presentation-ObjectまたはApplication-Objectにイベントやプロパティがないことに気付きました。これは、プレゼンテーションが完全にロードされた時期を示す可能性があります。また、AddIn-Express(私たちが使用するプラグイン)にはそれにリンクされたイベントはありません。
は、プレゼンテーション内のすべてのシェイプ/コンテンツは以下のようなamateuristicコードに頼ることなく、完全にロードされている場合、我々はテストすることができますどのような方法があります:
現在のダーティー修正:(このコードは実際に私の目を傷つける)
bool hasNotBeenSaved = true;
while (hasNotBeenSaved) {
try {
PowerPointApp.ActivePresentation.SaveAs(filePath);
hasNotBeenSaved = false;
} catch (Exception ex) {
log("AddInModule - PowerpointPanel - SaveAs() Enter exception clause");
Threading.Thread.Sleep(100);
}
}
エラーは、SaveAs()にスローされます。ファイルは常に開いたままでなければなりません。だから私は本当にCOMObjectsを解放することはできません。また、Powerpoint.exeプロセスは1つしか実行されていません。 – User999999