Страницы: 1
RSS
Перебор папок и действия с файлами в них
 
Здравствуйте, Уважаемые форумчане!  
 
Такой вопросик,  
 
Есть постоянная папка (например C:\Temp\), в которой в свою очередь находятся другие папки (каждый раз число и имена папок может быть разным), которые имеют имена в формате типа 2-131, 15-123, 1-12311 и т.д. В этих подпапках есть файлы *.csv, которые необходимо пересохранить в *.xls с исходным именем и в исходную папку. То есть, файл 34.csv в папке 1-123 должен быть сохранен как 34.xls.  
 
Подскажите, каким образом вообще можно перебирать файлы в подпапках?  
 
Искал темы по форуму, но так и не нашел подобных. Заранее благодарен.
 
М.б. достаточно ПЕРЕИМЕНОВАТЬ файлы?  
 
for /r C:\Temp %F in (*.csv) do ren %F *.xls
 
{quote}{login=Казанский}{date=16.01.2011 02:22}{thema=}{post}М.б. достаточно ПЕРЕИМЕНОВАТЬ файлы?  
 
for /r C:\Temp %F in (*.csv) do ren %F *.xls{/post}{/quote}  
 
нет, переименованием не получится. Мне нужен только сам принцип перебора подпапок и файлов в них в конкретной папке
 
А когда поиск по форуму отменили? :-)  
Я набрал в поиске: "перебор папок и файлов" - ответ уже есть....
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=16.01.2011 02:37}{thema=}{post}А когда поиск по форуму отменили? :-)  
Я набрал в поиске: "перебор папок и файлов" - ответ уже есть....{/post}{/quote}  
все правильно. Только там перебор всех файлов в папке, а мне необходим перебор файлов в подпапках определенной папки
 
Для перебора файлов в подпапках можете попробовать эту функцию:  
http://excelvba.ru/code/FilenamesCollection  
 
А пересохранить - уже не проблема:  
 
Sub ПримерИспользованияФункции_FilenamesCollection()  
   ' Ищем на в папке все файлы CSV, и пересохраняем их в XLS  
   ' Просматриваются папки с глубиной вложения не более трёх.  
 
   Dim coll As Collection, ПутьКПапке As String, wb As Workbook  
   ПутьКПапке = "C:\Temp\"  
   ' считываем в колекцию coll нужные имена файлов  
   Set coll = FilenamesCollection(ПутьКПапке, ".csv", 3)  
 
   Application.ScreenUpdating = False  
   For i = 1 To coll.Count    ' перебираем все элементы коллекции, содержащей пути к файлам  
       Set wb = Workbooks.Open(coll(i)) ' открываем файл  
       wb.SaveAs Replace(coll(i), ".csv", ".xls"), xlWorkbookNormal ' пересохраняем  
       wb.Close False ' закрываем файл  
       DoEvents    ' временно передаём управление ОС  
   Next  
End Sub  
 
 
PS: Переименовать, вроде как, будет недостаточно.  
(проверил, переименованный файл при открытии выглядит не всегда корректно, по крайней мере, при использовании в качестве разделителя ";")
 
{quote}{login=}{date=16.01.2011 02:53}{thema=Re: }{post}}  
все правильно. Только там перебор всех файлов в папке, а мне необходим перебор файлов в подпапках определенной папки{/post}{/quote}Это шутка? Или Вы дальше первого поста первой темы поиска не спустились? Может надо почитать чуть дальше и углубленней? Там есть перебор фалов в папке, включая ПОДПАПКИ.  
ДЛЯ ЛЕНИВЫХ:  
<EM>http://www.planetaexcel.ru/forum.php?thread_id=18849</EM>  
5-ый пост сверху
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=16.01.2011 03:06}{thema=Re: Re: }{post}{quote}{login=}{date=16.01.2011 02:53}{thema=Re: }{post}}  
все правильно. Только там перебор всех файлов в папке, а мне необходим перебор файлов в подпапках определенной папки{/post}{/quote}Это шутка? Или Вы дальше первого поста первой темы поиска не спустились? Может надо почитать чуть дальше и углубленней? Там есть перебор фалов в папке, включая ПОДПАПКИ.  
ДЛЯ ЛЕНИВЫХ:  
<EM>http://www.planetaexcel.ru/forum.php?thread_id=18849</EM>  
5-ый пост сверху{/post}{/quote}  
 
Спасибо, я читал, но там идет еще вывод строк в книгу. А мне надо тупо чистый код именно перебора. Вы простите, но моих знаний кода не хватило, чтобы выделить оттуда чистый код
Страницы: 1
Читают тему
Наверх