Открыть все файлы с частичным именем в подпапках – VBA

Я пытаюсь открыть все файлы с именами, заканчивающимися ToDo.xlsx, выполнив цикл, который проходит через все подпапки.

Я нашел этот цикл в другом столбце в 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, чтобы минимизировать время обработки?

спасибо

Вместо For each цикла, попробуйте, если следующий лоп быстрее:

 filename = Dir(oFolder.Name & "\*ToDo.xlsx") While (filename <> "") ' processing... Full name is oFolder.Name & "\" & filename filename = Dir Wend 
Interesting Posts

wraptext – гиперссылка в данной ячейке

Удаление характерных строк в простом файле Excel

Необходимость INDEX / MATCH или VLOOKUP несогласованных значений

SUM (IF (ColA = ColA AND ColB = ColB, ColC, 0)

Размер массива, возвращаемый функцией разделения – Excel VBA

Как сравнить строки по листам в Excel?

Возможно ли скопировать данные из ячейки в макрос?

Передача рабочего листа подкласса

Не удалось получить сортировку Delphi с Excel для работы

Найдите Ближайший матч в EXCEL на основе нескольких критериев

Числа, сохраненные как текст – при преобразовании в числа, цифры исчезают

Excel условное форматирование – выделяет номера больше 5, но игнорировать любую формулу

Прокручивайте листы и сохраняйте ключевую информацию в строках на новом листе

Преобразование миллисекунд на сегодняшний день (в Excel)

Ошибка экспорта Epplus: «System.Data.DataSet» тип объекта «System.Data.DataTable» не выполнен в натуральном выражении.

Давайте будем гением компьютера.