Excel VBA – WorkbookBeforeSave事件
我有一个应用程序对象的加载项。 该对象被声明为WithEvents。 这使我可以每次用户保存文件时将一些数据点刷新到中央数据库。 这在大多数情况下是有效的。 但是,有一个用户退出Excel应用程序,调用Save对话框。 看起来,用未保存的文件退出Excel意味着WorkbookBeforeSave事件不会触发。
为了强调一下,我已经确认,当用户点击CTRL-S或者按下保存button时,事件会被触发。 我也证实,如果我退出申请,事件不会触发。
我可以考虑一些解决方法(例如每10秒自动保存一次),但是我对此不是很生气。 任何人都可以证实这种行为和/或没有人有补救措施?
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
您可以使用Workbook_BeforeClose
例程和工作簿对象的Saved
属性。
Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.Saved = False Then 'Call save function End If End Sub
你有没有考虑BeforeClose之前使用? 这可能是一个更好的select。