0
我写了一个代码在用户保存工作表时运行,此代码保存另一个副本,然后再次保存原始文件,以避免用户编辑“备份”工作簿。然而,一旦它再次保存原始文件,“after_save”触发器被触发并保持无穷大。 已经在这里检查了解决方案StackOverFlow,但没有找到一个解决了我的问题。VBA保存副本after_save,进入无尽循环
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
Call SaveToLocations
End Sub
Sub SaveToLocations()
Dim WoExt, Ext, BkPath, nDateTime As String
Static OrigName As String
'defining variables
nDateTime = Format(Now, "YYMMDD")
OrigName = "C:\Users\xxx.xxx\Desktop\vbatest\test orig.xlsm"
Ext = ".xls"
WoExt = "test orig"
BkPath = "C:\Users\xxx.xxx\Desktop\vbatest\Backup\"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs (BkPath + WoExt + " - Backup - " + nDateTime + Ext)
ActiveWorkbook.SaveAs OrigName
Application.DisplayAlerts = True
End Sub
使用'SaveCopyAs'避免重新保存,并尝试使用'If Workbook.Saved = True'来避免进入保存循环 – Wolfie
首先,如果您想保留档案,应在用户打开工作簿时运行而不是当应用更改并且用户正在尝试保存它时。你所谓的原创只是编辑工作手册的另一个副本。 – Masoud
作为应用程序逻辑的一部分,您应该管理一个变量'Public SaveCopy As Boolean',它将指示是否保存 –