我想使用浏览目录的文件 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秒。
对于VBA来说,您的初始时间似乎很慢。您是否正在使用Application.ScreenUpdating = false?
—
Michiel van der Blonk
您似乎想念
—
baldmosher
code
Set MyObj = New FileSystemObject
人们很快将FSO称为“慢速”,我感到非常可悲,但是没有人提到仅通过使用早期绑定而不是对的后期绑定就可以避免的性能损失
—
Mathieu Guindon
Object
。