【发布时间】:2016-10-21 01:41:15
【问题描述】:
我在 excel 中有一个宏,它在保存之前运行,并创建一个名称中包含实际日期的 excel 表的备份。
这些备份开始占用太多空间,因此我插入了另一个宏来删除超过 14 天的备份。问题是有时我们不会在 2 周或几个月内保存新副本,所以我需要一个只保留 5 个最新备份并删除其余备份的宏。
当前使用的宏:
'======================================================================================
'delete old backup
Set fso = CreateObject("Scripting.FileSystemObject")
For Each fcount In fso.GetFolder(ThisWorkbook.Path & "\" & "excel_backups" & "\").Files
If DateDiff("d", fcount.DateCreated, Now()) > 14 Then
Kill fcount
End If
Next fcount
'======================================================================================
备份以这种格式保存:
ThisWorkbook.Path & "\excel_backups" & "\backup_" & Format(Date, "yyyy.mm.dd") & ".h" & Hour(Now) & "_" & ActiveWorkbook.name
所以备份看起来像这样:backup_2014.12.18.h14_[filename].xlsm
我的问题是:能否以某种方式对其进行修改以仅删除最旧的,并保留最后 5 个最新的?我不知道如何开始写。
感谢您的宝贵时间。
【问题讨论】:
-
查看here 使用 FileSystemObject 返回文件夹中列出的文件的修改日期。我会做的方式(可能不是最有效的方式)是在列中列出这些日期,对其进行排序,删除前 5 个,然后循环剩余的日期并删除那些使用代码的日期你有。我的两分钱。