Страницы: 1
RSS
Перименовать книги по имени папки
 
Всем доброго времени суток. Ситуация следующая. Есть куча папок с названиями организаций. В каждой папке лежит одна книга. Название книг всюду одинаковые. В редких случаях им присвоены какие-то другие имена. Задача: переименовать книги по названию папок, в которых они лежат. Можно поместить результат в одну общую папку, это не принципиально.
Chistomaster
 
Сначала считываете все пути к файлам из подпапок этой функцией: http://excelvba.ru/code/FilenamesCollection  
 
Потом в цикле перебираем все файлы, и переименовываем  
 
Неохота воссоздавать вашу структуру папок для тестирования макроса...  
Да ещё и угадывать путь к корневой папке... (или надо выводить диалоговое окно выбора корневой папки)?
 
Вот вам макрос:  
 
 
Sub ПереименованиеФайлов()  
   ' обзор папок начинается с папки "Рабочий стол"  
   СтартоваяПапка = CreateObject("WScript.Shell").SpecialFolders("Desktop")  
   ПутьКПапке = GetFolderPath("Выберите папку для переименовая файлов", СтартоваяПапка)  
   If ПутьКПапке = "" Then Exit Sub    ' выход, если пользователь отказался от выбора папки  
 
   ' Ищем в выбранной папке все файлы XLS  
   ' считываем в колекцию coll нужные имена файлов  
   Dim coll As Collection:   Set coll = FilenamesCollection(ПутьКПапке, ".xls")  
     
   For Each file In coll ' переименование файлов в цикле  
       Расширение = Split(file, ".")(UBound(Split(file, ".")))  
       ИмяПапки = Split(file, "\")(UBound(Split(file, "\")) - 1)  
       ' переименование файла  
       НовыйПутьКФайлу = Replace(file, Dir(file), ИмяПапки & "." & Расширение)  
       Name file As НовыйПутьКФайлу  
   Next  
   MsgBox "Готово", vbInformation  
End Sub  
 
 
 
А вот - пример файла с этим макросом: http://excelvba.ru/XL_Files/Sample__28-10-2010__19-34-52.zip  
Нажмите кнопочку, выберите папку, - и все файлы переименуются.  
 
Не забудьте перед тестированием создать копию обрабатываемой папки.
 
EducatedFool Спасибо! Попробую разобраться с этим!
Chistomaster
Страницы: 1
Читают тему
Наверх