Всем доброго времени суток. Ситуация следующая. Есть куча папок с названиями организаций. В каждой папке лежит одна книга. Название книг всюду одинаковые. В редких случаях им присвоены какие-то другие имена. Задача: переименовать книги по названию папок, в которых они лежат. Можно поместить результат в одну общую папку, это не принципиально.
Потом в цикле перебираем все файлы, и переименовываем
Неохота воссоздавать вашу структуру папок для тестирования макроса... Да ещё и угадывать путь к корневой папке... (или надо выводить диалоговое окно выбора корневой папки)?
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