我想使用循环遍历目录的文件vba /questions/tagged/vba在 Excel 2010 中。
在循环中,我需要:
我编写了以下代码,如果文件夹中的文件不超过 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
.
- 考虑到下面的另一个答案,20 秒减少到不到 1 秒。
Dir
需要通配符,这样你就可以通过添加过滤器来产生很大的不同test
预先避免测试每个文件
Sub LoopThroughFiles()
Dim StrFile As String
StrFile = Dir("c:\testfolder\*test*")
Do While Len(StrFile) > 0
Debug.Print StrFile
StrFile = Dir
Loop
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)