| Цитата |
|---|
| БМВ написал: дополните условием не равенства тому что нужно исключить. |
Еще раз подниму тему, т.к. еще дорабатываю макрос.
Исключение из поиска по имени файла, благодаря БМВ, сделал, спасибо.
А сейчас мне надо сделать исключение конкретной подпапки из поиска.
Не могу понять, где и как прописать это.
Пример:
Папка E:\SOFT, содержит подпапки E:\SOFT\CAD, E:\SOFT\Windows, E:\SOFT\Драйверы и т.п. со своими подпапками и файлами.
Надо провести поиск по всем подпапкам на всю глубину, кроме E:\SOFT\Windows и всех в нее вложенных.
| Код |
|---|
Function GetAllFileNamesUsingFSO(ByVal FolderPath As String, ByVal Mask As String, ByRef FSO, _ ByRef FileNamesColl As Collection, ByVal SearchDeep As Long) ' перебирает все файлы и подпапки в папке FolderPath, используя объект FSO ' перебор папок осуществляется в том случае, если SearchDeep > 1 ' добавляет пути найденных файлов в коллекцию FileNamesColl On Error Resume Next: Set curfold = FSO.GetFolder(FolderPath) If Not curfold Is Nothing Then ' если удалось получить доступ к папке For Each fil In curfold.Files ' перебираем все файлы в папке FolderPath If fil.Name Like "*" & Mask Xor fil.Name Like "~$*" & Mask Xor fil.Name Like "*" & "db" Then FileNamesColl.Add fil.Path Next SearchDeep = SearchDeep - 1 ' уменьшаем глубину поиска в подпапках If SearchDeep Then ' если надо искать глубже For Each sfol In curfold.SubFolders ' ' перебираем все подпапки в папке FolderPath GetAllFileNamesUsingFSO sfol.Path, Mask, FSO, FileNamesColl, SearchDeep Next End If Set fil = Nothing: Set curfold = Nothing ' очищаем переменные End If End Function |
Изменено: - 23.05.2023 23:28:49