VBA Excel …如何留下最新的5个备份和删除rest?

  • 我想离开最新的7个备份,并删除其余的…我想保持每个月的第一个备份…&程序应该OpenAsReadOnly备份没有问!

这是我的代码:

Option Explicit Sub Workbook_Open() If Dir(ActiveWorkbook.Path & "\" & "Backup", vbDirectory) = "" Then MkDir (ActiveWorkbook.Path & "\" & "Backup") End If Dim Pfad As String Dim Datumzeitstempel As String Dim Jetzt As Date Jetzt = Now() Pfad = ActiveWorkbook.Path & "\" & "Backup" Datumzeitstempel = Year(Date) & Format(Month(Date), "00") & Format(Day(Date), "00") ActiveWorkbook.SaveCopyAs (Pfad & "\" & Datumzeitstempel & ".xlsm") ReadOnlyRecommended = True End Sub 

要解决备份轮换的问题,您可以执行以下操作。 而不是写在月份和date的文件,使用WEEKDAYfunction。 然后,每次打开文件时,您都会覆盖每日备份,并保留上周/ 7天的备份。
解决月度备份问题只能使用月份来做同样的事情。 当新月来临时,新的备份将开始。
这个解决scheme的唯一问题是,每次打开文件时,上次备份都会被覆盖。
如果你真的需要首先备份,那么你将不得不检查文件的存在。

但是也许更好的解决scheme是在你的文件外部编写一个脚本,并按计划运行备份,例如在午夜。 它甚至可以是你熟悉的VBScript。