我需要一个VBA宏中的帮助,它将删除包含2个以上“_”的目录中的文件,并且超过3个月,但是有一些文件夹&目录中不得触及或修改的子文件夹。
例如,Hi_Thanks_for_your_help 或 Hi_Thank_You等。
Const DIR = "x"
Const MAX_AGE = 3 ' Unit: Months
Dim oFSO
Dim aExclude
Sub XLS()
aExclude = Array("x")
Set oFSO = CreateObject("Scripting.FilesystemObject")
deleteFiles oFSO.GetFolder(DIR)
Set oFSO = Nothing
End Sub
'=================================
Function isExclude(sPath)
Dim s, bAns
bAns = False
For Each s In aExclude
If InStr(1, sPath, s, vbTextCompare) = 1 Then
bAns = True
Exit For
End If
Next
isExclude = bAns
End Function
'=================================
Function isOldFile(fFile)
' Old file if "MAX_AGE" months before today is greater than the file modification time
isOldFile = (DateAdd("m", -MAX_AGE, Date) > fFile.DateLastModified)
End Function
这是我用代码得到的最远的,我缺少的是如何检查文件名是否超过2“_”,如果是这样的话&它超过3个月=删除。
提前致谢!干杯!
答案 0 :(得分:1)
Dim pathname As String = ""
If fileNameCount("file_name") And DateDiff("m", NOW(), FileDateTime(pathname)) > 3 Then ' if '_' is more than 2 count and more than 3 months old, then delete
' if true delete file codes starts here
......
End If
Public Function fileNameCount(filename As String) As Boolean
fileNameCount = False
Dim count As Long
Dim temp() As String
temp = Split(filename, "_")
count = UBound(temp, 1)
If (count > 2) Then
fileNameCount = True
End If
End Function
我已经为你编写了部分代码,方法fileNameCount将为'_'计数返回true / false,我使用DateDiff来获取文件月份的差异。因此,我正在检测这两个条件,如果两个语句都是真实条件,那么你应继续删除我没有写的文件代码。
您需要做的是
1)传入“file_name”参数,您需要考虑如何获取文件名
2)传递文件的正确路径名
3)编写删除文件的代码
无论如何,我没有测试代码,所以它可能有一些错误。希望这将有助于您尝试做的事情。
答案 1 :(得分:0)
要获取文件中"_"
的数量,我会使用与此类似的内容:
Dim a
Dim c As Integer
a = Split("File_Name_Here", "_")
c = Ubound(a)
使用此功能,您知道如果文件名被拆分为3个或更多子字符串,则文件名中有2个"_"
。至于文件的年龄,FileDateTime("FilePath")
将为您提供创建日期或上次修改日期。