Коллеги, товарищи, друзья! Перекопав бессчетное количество странице Интернета, израсходовав тонный мегабайт трафика, общаясь с полуботами полулюдьми - я всё равно вернулся сюда к Вам за советом. Итак, существует задача - переименовать 380 файлов, лежащих в одно папке, согласно списку Excel. Данная тема уже не раз обсуждалась на просторах нашего Форума, но (как это бывает обычно) что-то не срастается. Значицо, повторюсь ещё раз, есть задача: - Переименовать 380 PDF файлов, согласно списку Excel. - Файлы имеют имя от 1 до 380 - Я так понимаю, что нужно использовать что-то типа NewName OldName Схожая тема была тут: http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=47869 - но не вышло что-то (постоянная ошибка Runtime error 52 или 53). "Я ж не программист" (с) На всякий случай контролвэшню код с прошлой темы (я думаю, что из неё можно что-то сделать):
User_abc,И что вам нужно ответить? Абсолютно рабочий код. Ток непонятно зачем 2 раза его записывать, как и написали в теме по той ссылке которую приводите.
OldName = sPath & Cells(i, 1) & ".pdf"'старое имя в ячейке
NewName = sPath & Cells(i, 2) & ".pdf"'новое имя
Name OldName AsNewName
Nexti
EndSub
Но раз все говорят, что код рабочий - почему у меня вылазит ошибка, когда я скачал из предыдущей темы архив с файлами - распаковал в папку, описанную в теме, и не работает ничего...
Скопировал файлы у предыдущего автора. Пробовал на разных компьютерах. Ничего не вышло. Всё размещал в С:\1\ Всё равно Bad file name or number (Error 52). Ничего не понимаю.
Попробовал все работает! В столбце A-наименования файлов существующих В столбце B-наименования на которые необходимо поменять И переменную sRath переписал с
OldName = sPath & Cells(i, 1) & ".jpg"'старое имя в ячейке
NewName = sPath & Cells(i, 2) & ".jpg"'новое имя
Name OldName AsNewName
Nexti
EndSub
настроить так, чтобы при переименовании в конце добавлял "_1.jpg", "_2.jpg", "_3.jpg", "_4.jpg"... в нужном кол-ве? Например, у меня есть список артикулов и у каждого артикула от 1 до 5-6 фото. Названия фото надо переименовать по артикулу. А так как список из несколько тысяч артикулов, то в ручную подгонять одно на другое думаю не реально. Помогите пожалуйста! Заранее благодарю за любую помощь! ПС. для наглядного примера прикрепил тестовый документ, то как выглядит мой список.
Hugo, Извините пожалуйста, а можете для особо тупых и далеких на более человечном языке объяснить, что куда и как?))) В любом случае спасибо за помощь!)
Да. Самой простой формулой счетесли(), склейка, даблклики. Хоть на миллион за минуту. Вот, нашёл время. В файле пошагово, но можно всё совместить в одной ячейке, хотя зачем?
В общем, неделю назад искал как переименовывать файлы по списку и наткнулся на эту тему. Обрадовался, начал использовать, но на практике постоянно сталкивался с какими-то мелкими проблемами. В итоге пришел вот к такому варианту кода:
Option Explicit Sub Rename() On Error Resume Next Dim OldName As String, NewName As String, sPath As String Dim i As Long, lLastRow As Long sPath = "C:\1\" lLastRow = Cells(Rows.Count, "a").End(xlUp).Row For i = 2 To lLastRow OldName = sPath & Cells(i, "a") NewName = sPath & Cells(i, "b") Name OldName As NewName Next i If Err > 0 Then Exit Sub On Error GoTo 0 End Sub
Сразу скажу, что я там даже близко не программист, только примерно понимаю, как код работает, опирался на интуицию и просто шел путем перебора вариантов. Какие тут изменения относительно верхнего кода и почему: 1. Убрал кнопку - мне не нужна, и два одинаковых кода смущают. 2. Переименовал sub - почему-то иногда проблемы с кодировкой при ctrl-v 3. Заменил 1 и 2 на "a", "b" здесь: " sPath & Cells(i, 1) sPath & Cells(i, 2)". Наверное, не обязательно, но мне проще соотносить с колонкой было 4. "lLastRow = Cells(Rows.Count, "a")". Показалось, что с 2 у меня не работало. Заменил на 1, потом на "a", соответственно. 5. Сразу сделал отсчет со второй строки. Как правило, всегда есть подзаголовки. 6. И, самое главное, постоянно вылезали ошибки 53 и 58. Когда работаешь с большим объемом данных, неудобно спотыкаться на каждой строке. Проще потом проверить, что не так. Минус еще в том, что он последовательно обрабатывает строчки и непонятно на какой именно происходит ошибка, а уже переименованные строки он считает ошибочными при повторном запуске. Поэтому погуглил как игнорировать ошибки.
Я понимаю, что как сами изменения, так и мои комментарии для специалиста могут выглядеть также как шаманские рецепты выглядят для врача, но эта система работает, и может кому-то помочь.
С радостью узнаю о возможных неточностях или более эффективных методах решения проблемы.
Обработка ошибок неправильная - какой смысл молча проверять была ли в процессе ошибка? Молча... Лучше где-то сразу после копирования If Err > 0 Then пишем куда-то эти имена и сбрасываем ошибку - так получите лог работы.