Ich verwende die Zeilen
Mein Workaround wäre jetzt noch zusätzlich WorkbookAfterSaveEvent ebenfalls zu belauschen und in Kombination mit BeforeClose und einer Variablen zu prüfen ob das Dokument nun wirklich geschlossen wurde.
Alternativ über einen Timer ständig zu prüfen, ob ein spezifisches Workbook geöffnet ist, finde ich eher unschön. Gibt es irgendwelche besseren und zuverlässigen Alternativen?
// bereits bestehende Instanzen berücksichtigen, also auf GetActiveInstance() abklopfen.
excelApplication = (Excel.Application.GetActiveInstance() == null ? new Excel.Application() : Excel.Application.GetActiveInstance());
//excelApplication.DisplayAlerts = false;
excelApplication.WorkbookBeforeCloseEvent += new Excel.Application_WorkbookBeforeCloseEventHandler(excelApplication_WorkbookBeforeClose);
excelApplication.WorkbookOpenEvent += new Excel.Application_WorkbookOpenEventHandler(excelApplication_WorkbookOpen);
um das Öffnen und Schließen eines Excel Workbooks mit zu bekommen. Das funktioniert auch soweit gut, aber es gibt z.B. den Sonderfall, daß das Dokument noch gespeichert werden muss und der Benutzer auf Abbrechen klickt. Das WorkbookBeforeCloseEvent triggert ja schon vorher und so kann es passieren, daß ich nicht mitbekomme, daß das Dokument offen bleibt, denn dummerweise wird im Fall eines Abbruchs durch den Benutzer auch kein WorkbookOpenEvent generiert.
Mein Workaround wäre jetzt noch zusätzlich WorkbookAfterSaveEvent ebenfalls zu belauschen und in Kombination mit BeforeClose und einer Variablen zu prüfen ob das Dokument nun wirklich geschlossen wurde.
Alternativ über einen Timer ständig zu prüfen, ob ein spezifisches Workbook geöffnet ist, finde ich eher unschön. Gibt es irgendwelche besseren und zuverlässigen Alternativen?