Страницы: 1
RSS
Альтернатива DIR (Вопрос для опытных пользователей)
 
Знаю что функцию DIR повторно использовать нельзя во вложенном цикле, Подскажите, а как тогда организовать поиск во вложенных под папках глубиной от 4х и более. Например:  
У меня задача найти по определенному пути в папке и ее подпапках файлы с названием foto.jpf и скопировать их все в другое место под именем папки в которой он находится. Структура глубиной в 4-5 подпапок, когда нахажу первый файл, то Dir 3 ругается, так как я его уже использовал в DIR 4.  
 
MyPath = "C:\Documents and Settings\111\"    
MyName = Dir(MyPath, vbDirectory)    
Do While MyName <> ""      
If MyName <> "." And MyName <> ".." And (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then  
MyName2 = Dir(MyPath & MyName & "\", vbDirectory)  
Do While MyName2 <> ""  
If MyName2 <> "." And MyName2 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2) And vbDirectory) = vbDirectory Then  
                     
MyName3 = Dir(MyPath & MyName & "\" & MyName2 & "\", vbDirectory)  
Do While MyName3 <> ""  
If MyName3 <> "." And MyName3 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3) And vbDirectory) = vbDirectory Then  
                             
MyName4 = Dir(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\", vbDirectory)  
Do While MyName4 <> ""  
If MyName4 <> "." And MyName4 <> ".." And (GetAttr(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4) And vbDirectory) = vbDirectory Then  
If CreateObject("Scripting.FileSystemObject").FileExists(MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg") = True Then 'Åñëè ôàéë ôîòî åñòü, òî  
FileCopy MyPath & MyName & "\" & MyName2 & "\" & MyName3 & "\" & MyName4 & "\" & "foto.jpg", "C:\Documents and Settings\Àëåêñåé\Ðàáî÷èé ñòîë\Êàòàëîã òîâàðà\Èçîáðàæ òîâàðîâ ïî èõ øòðèõ êîäó\" & MyName4 & ".jpg"  
End If  
End If  
MyName4 = Dir  
Loop  
                             
End If  
MyName3 = Dir  
Loop  
                     
End If  
MyName2 = Dir  
Loop  
         
End If  
MyName = Dir    ' Get next entry.  
Loop  
 
 
Какая есть функция, аналогичная DIR, но в состоянии работать со вложенными папками? СПАСИБО!
 

Смотрим пример здесь: http://excelvba.ru/code/FilenamesCollection

 
{quote}{login=EducatedFool}{date=23.05.2010 09:54}{thema=}{post}

Смотрим пример здесь: http://excelvba.ru/code/FilenamesCollection

{/post}{/quote}  
EducatedFool - Спасибо... Подзабыл что то я это все за год :)
 
да и дир как раз можно использовать где угодно..
Живи и дай жить..
Страницы: 1
Читают тему
Наверх