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',它將指示是否保存 –