Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2010, 17:51   #1
Rossoman
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 14
По умолчанию Как убыстрить поиск файла во вложенных папках

есть список в экселе, там есть строчки выделенные желтым(все это не суть, интересует только алгоритм и некоторая его реализация)
есть папка, в которой есть другие папки, в которой куча других папок нужно найти файл, который есть там, считать из него кое-чего, и выйти из цикла и перейти к след строчке(желтой)

я ищу так:
иду в папку банк(там куча разных папок, я захожу в каждую и меня в ней интересуют исключительно 2 папки Arhiv и Saricv в них файлы, так вот, иду сначала искать в Arhiv, каждой из папок, и даже если там нахожу, почему-то не выхожу из главного цикла а иду искать в оставшихся подпапках папки банк). Что неверно из этого и какой алгоритм должен быть правильным?

Код:
For x = 4 To xStr2
    If Worksheets("Лист1").Cells(x, 6).Interior.ColorIndex = 6 And Worksheets("Лист1").Cells(x, 6) <> "" Then
        found = False
        xxNameIst = Right(Cells(x, 5), 7)
        Set fso2 = CreateObject("Scripting.FileSystemObject")
        Set f = fso2.GetFolder("\\bank\")
        Set s1 = f.SubFolders
        For Each f1 In s1
            If found = True Then Exit For
            Set s2 = fso2.GetFolder(f1.Path).SubFolders
            For Each f2 In s2
                If Right(f2.Path, 5) = "Arhiv" Then
                    Proc (f2.Path)
                    If found = True Then Exit For
                ElseIf Right(f2.Path, 6) = "Saricv" Then
                    Proc (f2.Path)
                    Exit For
                End If
            Next
        Next
    End If
Next x
Код:
Sub Proc(Path)
'dim'ы
'MsgBox Path
    myPattern = abcd & "rr?" & xxNameIst & ".txt"
    myPath = Path & Application.PathSeparator
    myName = Dir(myPath & myPattern)
Do While myName <> ""
found = True
выполняю с ним то, что нужно
    myName = Dir
Loop
End Sub
Rossoman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как осуществить поиск файла *.rtf Karinka Общие вопросы Delphi 4 18.03.2009 15:35
Как убыстрить поиск? Dennikid Общие вопросы Delphi 8 31.10.2008 16:17
непрерывная смена фотографий в разных папках. brenfire Общие вопросы по Java, Java SE, Kotlin 0 07.08.2008 14:39
Поиск файлов в папках и подпапках Format C: Общие вопросы Delphi 17 04.05.2007 23:31