问题在于:
我有一个包含许多文本文件的文件夹。我想找到我需要解析的文件;但是,每次都有不同的名称,所以我不能使用文件名。我所知道的是它总是39KB(虽然每次略有不同,所以我检查> 39000和< 40000)。但是,文件夹中通常有几个相同大小的文件,我想选择最近修改过的MOST文件。
我有什么:
If fNewest = "" Then
Set fNewest = objFile
ElseIf fNewest.DateLastModified < objFile.DateLastModified Then
Set fNewest = objFile
End If
If (objFile.Size > 39000 and objFile.Size < 40000) Then
Msgbox fNewest
End If
当fNewest返回我想要的文件的路径(最近修改过的39Kb文件)时,Msgbox被调用4次(这是该文件夹中39Kb文件的出现次数)。有谁知道我如何修改此代码来纠正这个问题,或者更好的方法来运行此检查?
我的最终煤炭是如上所述的条件声明,因此Msgbox被替换为获取该文件并解析它的特定函数的调用。
感谢。
答案 0 :(得分:2)
你的筑巢已关闭。 MsgBox
应位于循环之外,您可以使用该循环遍历文件夹中的文件,并且赋值应位于检查文件大小的条件内。试试这个:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder("...").Files
If f.Size > 39000 and f.Size < 40000 Then
If IsEmpty(newest) Then
Set newest = f
ElseIf newest.DateLastModified < f.DateLastModified Then
Set newest = f
End If
End If
Next
If Not IsNull(newest) Then MsgBox newest.Name
答案 1 :(得分:1)
Dim newest, fso
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder(".").Files
If f.Size > 39000 and f.Size < 40000 Then
If IsEmpty(newest) Then
Set newest = f
ElseIf newest.DateLastModified < f.DateLastModified Then
Set newest = f
End If
End If
Next
If Not IsEmpty(newest) Then MsgBox newest.Name
(我只是将IsNull
替换为IsEmpty
)