SaveAs里面BeforeSave(Excel,VBA)

我想编程Excel来创build备份我的文件,然后再保存它。

但每次我尝试使用它,Excel崩溃。

可以请一些解释我为什么会发生这种情况,即使我插入Application.EnableEvents = False以防止无限循环?

我使用的代码如下:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.EnableEvents = False ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & "BackUp_" & Date & "_" & ActiveWorkbook.Name, FileFormat:=52 Application.EnableEvents = True End Sub 

预先感谢您的帮助!

编辑:我find了原因。 SaveAs将closures原始工作簿而不保存,并自动打开新的工作簿。 因此,excel不能执行原始保存脚本。

相反,使用SaveCopyAs可以在后台创build副本,因此原始文件在您的窗口中仍然存在。

尝试这个:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveWorkbook.SaveCopyAs Filename:=ActiveWorkbook.Path & "\" & "BackUp_" & Format(Date, "YYYYMMDD") & "_" & ActiveWorkbook.Name End Sub 

注意:直接调用Date可能类似2017/11/22 ,其中包含/ ,这是一个无效的字符,使用Formatfunction可以防止错误。

Interesting Posts