Excel VBA - WorkbookBeforeSave事件

Pir*_*unt 5 excel vba excel-vba

我有一个带有应用程序对象的加载项.该对象声明为WithEvents.这使我能够在每次用户保存文件时将一些数据点刷新到中央数据库.这大部分时间都有效.但是,有一个用户退出Excel应用程序,该用户调用"保存"对话框.看来退出Excel与未保存的文件意味着WorkbookBeforeSave事件不会触发.

需要强调的是,我已经确认当用户点击CTRL-S或按下保存按钮时该事件会触发.我还确认,如果我退出该应用程序,该事件不会触发.

我可以想到一些解决方法(例如,每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
Run Code Online (Sandbox Code Playgroud)

Fra*_*ean 5

您可以使用Workbook_BeforeClose例程和Workbook Object的Saved属性.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.Saved = False Then
        'Call save function
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)


1do*_*ski 2

您是否考虑过在BeforeClose之前使用?这可能是一个更好的选择。