我想在Excel 2010中使用vba循环遍历目录的文件.
在循环中,我将需要
我编写了以下代码,如果该文件夹没有超过50个文件,则工作正常,否则它是非常慢的(我需要它与> 10000文件的文件夹一起使用).这段代码唯一的问题是查找操作file.name需要花费很多时间.
代码有效,但waaaaaay太慢(每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
Run Code Online (Sandbox Code Playgroud)
问题解决了:
Dir以特定方式(15000个文件为20秒)和使用该命令检查时间戳来解决FileDateTime. 我的循环脚本通过单个文件工作正常,但我现在需要它也查看/为多个目录.我被困了....
事情需要发生的事情:
这就是我所拥有的,这是行不通的,我知道是错的:
MsgBox "Please choose the folder."
Application.DisplayAlerts = False
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "\\blah\test\"
.AllowMultiSelect = False
If .Show <> -1 Then MsgBox "No folder selected! Exiting script.": Exit Sub
CSRootDir = .SelectedItems(1)
End With
folderPath = Dir(CSRootDir, "\*")
Do While Len(folderPath) > 0
Debug.Print folderPath
fileName = Dir(folderPath & "*.xls")
If folderPath <> "False" Then
Do While fileName <> ""
Application.ScreenUpdating = False
Set wbkCS = Workbooks.Open(folderPath & fileName)
--file loop …Run Code Online (Sandbox Code Playgroud)