Ich stecke derzeit auf ein Problem, das ich nicht lösen kann. Wenn wir ein Arbeitsblatt in pptx haben, erhalten wir COM-Exceptions beim Speichern. Laut unseren Tests ist es, weil die Präsentation noch nicht vollständig geladen ist, wenn wir versuchen, eine SaveAs() oder SaveCopyAs() zu tun.Powerpoint Interop: Wie erkennt man, wenn eine Präsentation vollständig geladen ist
Wir haben jedoch festgestellt, dass es kein Ereignis oder eine Eigenschaft in Presentation-Object oder Application-Object gibt, die anzeigen könnten, wenn die Präsentation vollständig geladen ist. Auch AddIn-Express (ein Plugin, das wir verwenden) hat kein Ereignis damit verbunden.
Gibt es Art und Weise, wie wir testen können, wenn alle Formen/Inhalt in einer Präsentation, ohne auf amateuristic Code vollständig geladen sind unten wie:
Aktuelle Schmutzige Fix: (Dieser Code wirklich meine Augen weh tut)
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);
}
}
Der Fehler wird auf die SaveAs() geworfen. Die Datei muss immer geöffnet bleiben. Ich kann also keine COMObjects wirklich freigeben. Es läuft auch nur ein Powerpoint.exe - Prozess. – User999999