我正在尝试编写一些vba代码,该代码在指定的文件夹中使用文件名,挑选出该文件名的日期部分,并将其与当前日期进行比较。如果文件名中的日期较小,则应删除该文件。
日期以类似dd.mm.yy的文件名给出
到目前为止,我决定
Public Sub DeleteOldFiles()
Dim FolderOld, CheckDate, ValFile As String
FolderOld = "O:\temp\"
Set FS = CreateObject("Scripting.FileSystemObject")
Set Folder = FS.GetFolder(FolderOld)
For Each File In Folder.Files
CheckDate = File.Name
ValFile = Mid(DateiName, InStr(CheckDate, "valid until ") + 12) 'cut of everything before the date
ValFile = Left(ValFile, 8) 'cut everything behind the date
If ValFile < Format(Date(), "dd.mm.yy") Then
Kill FolderOld & CheckDate
End If
Next
End Sub
我的代码可以正常工作,只要它只涉及日期的一天部分,例如今天是8月28日。
如果文件名包含28.08.19,则该文件名仍然有效,并且未按预期删除。
如果文件名包含26.08.19,则该文件名无效,并且已按预期方式删除。 但是,如果文件名包含26.09.19,尽管仍然有效,但它会被删除。
也许有人有可能的解决方案?
答案 0 :(得分:0)
尝试比较这样的日期:
If Format(ValFile ,"yyyy-mm-dd") <= Format(Date(),"yyyy-mm-dd") Then......etc.