Я пытаюсь открыть все файлы с именами, заканчивающимися на ToDo.xlsx, выполнив цикл, который проходит через все подпапки.Открыть все файлы с частичным именем во вложенных папках - VBA
Я нашел этот цикл в другом посте в StackOverflow, но это занимает слишком много времени, когда есть много файлов (~ 35k в моем случае):
Public Sub NonRecursiveMethod()
Dim fso, oFolder, oSubfolder, oFile, queue As Collection
Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add fso.GetFolder("your folder path variable") 'obviously replace
Do While queue.Count > 0
Set oFolder = queue(1)
queue.Remove 1 'dequeue
'...insert any folder processing code here...
For Each oSubfolder In oFolder.SubFolders
queue.Add oSubfolder 'enqueue
Next oSubfolder
For Each oFile In oFolder.Files
'...insert any file processing code here...
Next oFile
Loop
End Sub
Мой код обработка:
If InStr(oFile.Name,"ToDo"= <> 0 Then Workbooks.Open Filename:=oSubfolder & oFile
Есть ли способ установить это условие в цикле for, чтобы минимизировать время обработки?
Спасибо
это открытие файлов с «ToDo», который принимает время, или рылась все подпапки? –
Поиск всех файлов во всех подпапках –
, так как возникает вопрос «как повысить производительность при циклировании по всем подпапкам»? не знаете, как сравнивается эффективность рекурсивного метода с этим. Кто-нибудь знает? –