我想使用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
命令来检查时间戳来解决了我的问题。 - 考虑到下面另一个答案,这 20 秒被缩短到不到 1 秒。
code
。设置 MyObj = New FileSystemObject。 - baldmosher