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
,其中包含/
,这是一个无效的字符,使用Format
function可以防止错误。