Страницы: 1
RSS
Где ошибка в макросе? (переименовать группу файлов)
 
Есть макрос по переименованию файла (база макроса от Pavel55). Немного доработал чтоб переименовывать много файлов, но чтото не так.  
____________________________________________________________­_________________  
Sub ПереименоватьГруппуФайлов()  
Dim OldName As String, NewName As String, OldName1 As String  
Dim i As Long  
 
For i = 1 To 131  
OldName1 = Cells(i, 1) 'старое имя в ячейке  
NewName = Cells(i, 2) 'новое имя  
OldName = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\OldName1.GIF"  
If OldName1 = OldName Then  
OldName = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\OldName1.GIF": NewName = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\NewName.GIF"  
Name OldName As NewName  
End If  
Next i  
End Sub  
____________________________________________________________­__________________  
 
Подскажите кто может.  
Спасибо.  
 
*Почему эксель?    
Так удобней. Эксель собирает имана и переименовывает(внутри), удаляет и заменяет символы. А кирилица и новые нужны будут позже.
 
Условие  If OldName1 = OldName Then никогда не будет ИСТИНА - вы сравниваете текстовые строки полного маршрута с именем файла и расширением просто с именем файла, всегда будет ЛОЖЬ.
 
Видимо вопрос действительно не простой, если в двух темах форума нет ответа,  да и на просторах сети пустовато. Может быть кто-нибудь  поможет решить эту задачу?  
И так,  формулировка уже становится тривиальной:  
- есть лист эксель на котором два списка имен  - старые имена и новые имена файлов.    
- расширения однотипны для всех файлов, пусть например  * .txt  
- все файлы в т.ч. и эксель лежат в одной папке  
- событие на выполнение переименования файлов  –  нажатие кнопки  
Как переименовать все файлы .txt имеющие старые названия из списка листа эксель на соответствующие новые имена.
 
Особая благодарность The_Prist.  
Большое спасибо! А главное все понятно.
 
{quote}{login=KKA}{date=17.09.2009 11:07}{thema=Спасибо!!! :)}{post}Особая благодарность The_Prist.  
Большое спасибо! А главное все понятно.{/post}{/quote}  
Будьте добры, прикрепите сам макрос сюда.Заранее спасибо.
 
{quote}{login=The_Prist}{date=17.09.2009 09:48}{thema=}{post}Не так?  
 
Option Explicit  
Sub ПереименоватьГруппуФайлов()  
   Dim OldName As String, NewName As String, sPath As String  
   Dim i As Long, lLastRow As Long  
   sPath = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\"  
   lLastRow = Cells(Rows.Count, 1).End(xlUp).Row  
   For i = 1 To lLastRow  
       OldName = sPath & Cells(i, 1) & ".GIF"    'старое имя в ячейке  
       NewName = sPath & Cells(i, 2) & ".GIF"    'новое имя  
       Name OldName As NewName  
   Next i  
End Sub{/post}{/quote} В 2010 это работает?
 
А у Вас 2010 есть?
 
Есть на другом компьютере.
 
Так и проверьте на другом.
 
Уже проверил. Не работает. А есть альтернатива этому макросу, который будет в десятке работать?
 
Неужели в десятке  
Name OldName As NewName  
не работает?  
А может это безопасность семёрки?
 
{quote}{login=}{date=08.09.2011 04:24}{thema=}{post}Уже проверил. Не работает. {/post}{/quote}Не работает - это как? Не переименовывает, даёт неправильные имена, ругается... Прогоните пошагово. На какой версии работает?
 
Чушь собачья. Все работает. Не вводите людей в заблуждение.
Я сам - дурнее всякого примера! ...
 
{quote}{login=Hugo}{date=08.09.2011 04:31}{thema=}{post}Name OldName As NewName  
{/post}{/quote} Вот здесь останавливается.
 
Я вижу, где ошибка. Но анонимам не отвечаю.
Я сам - дурнее всякого примера! ...
 
Я что правила нарушил?
 
Правила не нарушил, но дело принципа :)  
А ошибка в том, что путь должен быть полный указан.
 
Т.е. полный и действительный - тут каждая мелочь важна...
 
Елы-палы. Да я раньше пробовал ставить недостающую "\", но результат не изменился.
 
{quote}{login=ТеперьНеАноним}{date=09.09.2011 10:36}{thema=}{post}Елы-палы. Да я раньше пробовал ставить недостающую "\", но результат не изменился.{/post}{/quote} Это когда я макрос запускал кнопкой, а если запустить его с модуля листа, то выдает вот это:
 
Файлы с которыми работаю
 
File not found на  
OldName : "C:\1\Старые имена.txt"  
:)
 
Спасибо. Дошло. А как прописать, чтобы начал брать названия со второй (или другой) строчки?
 
Ну уж...  
Берёт с 1? Замените на 2 :)
 
Получилось. Спасибо.
Страницы: 1
Читают тему
Наверх