Ich habe ein Add-in mit einem Anwendungsobjekt. Das Objekt wird mit WithEvents deklariert. Dadurch kann ich jedes Mal, wenn der Benutzer die Datei speichert, einige Datenpunkte in eine zentrale Datenbank übertragen. Dies funktioniert die meiste Zeit. Jedoch gibt es einen Benutzer, der die Excel-Anwendung beendet, die das Dialogfeld Speichern aufruft. Es scheint, dass das Beenden von Excel mit einer nicht gespeicherten Datei bedeutet, dass das WorkbookBeforeSave-Ereignis nicht ausgelöst wird.Excel VBA - WorkbookBeforeSave Ereignis funktioniert
Nur um zu betonen, habe ich bestätigt, dass das Ereignis ausgelöst wird, wenn der Benutzer STRG-S drückt, oder drückt auf die Schaltfläche Speichern. Ich habe auch bestätigt, dass das Ereignis nicht ausgelöst wird, wenn ich die Anwendung beende.
Ich kann mir ein paar Problemumgehungen vorstellen (zum Beispiel automatisch alle 10 Sekunden speichern), aber ich bin nicht verrückt danach. Kann jemand dieses Verhalten bestätigen und/oder hat jemand eine Abhilfe?
Option Explicit
Private WithEvents mapp As Excel.Application
Private Sub mapp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Sanity preservation device
Msgbox "WorkbookBeforeSave event fired."
SaveSomeData Wb
End Sub
also wird das Ereignis überhaupt ausgelöst? Vielleicht möchten Sie sicherstellen, dass 'Application.enableEvents = True' ist. – Larry
Ja, das Ereignis wird ausgelöst, wenn ich die Arbeitsmappe mit STRG-S oder durch Drücken der Speichern-Schaltfläche in der Multifunktionsleiste speichern. Wenn ich jedoch Excel (ALT-F4) beende, werde ich aufgefordert, die Datei zu speichern, aber das WorkbookBeforeSave-Ereignis wird nicht ausgelöst. Wenn es so etwas wie OnQuit oder etwas für das Application-Objekt gäbe, würde ich das verwenden. So etwas sehe ich jedoch nicht. – PirateGrunt