我想使用 Excel 2010 中的 vba 循环遍历目录的文件。在循环中,我需要:文件名和文件格式化的日期。我已编写了以下代码...
Excel 2010 中的 vba 循环遍历目录的文件
在循环中,我需要:
我编写了以下代码,如果文件夹中的文件不超过 50 个,则运行良好,否则速度会非常慢(我需要它处理包含超过 10000 个文件的文件夹)。此代码的唯一问题是查找操作 file.name
需要花费大量时间。
代码可以运行但是速度太慢了(每 100 个文件需要 15 秒):
Sub LoopThroughFiles()
Dim MyObj As Object, MySource As Object, file As Variant
Set MySource = MyObj.GetFolder("c:\testfolder\")
For Each file In MySource.Files
If InStr(file.name, "test") > 0 Then
MsgBox "found"
Exit Sub
End If
Next file
End Sub
问题解决:
Dir
特定方式(15000 个文件需要 20 秒)并使用命令检查时间戳 FileDateTime
.
对于那些看到 Kar.ma 的评论并且想知道同样的事情的人来说,While 循环中的 StrFile = Dir 只是将 StrFile 设置为先前设置的 Dir(\'c:\testfolder\*test*\') 中找到的下一个文件。例如:如果有一个 test1.xlsx 和一个 test2.xlsx,则 Debug.Print StrFile 将首先给出 test1,然后 StrFile = Dir 将找到下一个匹配项,即 test2(因此停留在 while 循环中)。希望这能让事情清楚一点。