Страницы: 1
RSS
Переименование файлов на основе таблицы
 
Всем доброго дня!
Может кто сталкивался - можно с помощью макроса организовать переименовку файлов в папке?
К примеру, есть файл Excel, в нем есть колонка "Название файла" и "Правильное название", где соответственно указано текущее название файла и новое, которое должно быть.
Под файлами я понимаю файлы jpg, jpeg, png. В названии файла конечно указано полное имя включая расширение.
Так вот, возможно макросом найти каждой файл (1 строка таблицы = 1 файл) и задать ему новое имя, а в случае, если файл не найден - ставить метку, что такого файла нет?
 
Пакетное переименование файлов
правда, не отмечает переименованные. еще на старом форуме(архив) поищите - когда-то выкладывал аналогичный макрос.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
И ещё вариант.
Код
Sub RenameFiles()
For i = 1 To 10
    Shell "cmd.exe /c rename c:\тмп\" & Cells(i, 1).Text & " " & Cells(i, 2).Text
Next
End Sub
 
 
Если тема еще актуальна...
 
Мотя, спасибо большое, это именно то, что нужно.
Позже посмотрю его внутри и проверю на большом массиве и отпишусь!
 
Уважаемый Мотя, а Вы не могли бы подсказать, как добавить в макрос следующее - прописать новое название в Properties файла, а именно в title.
 
Уважаемая Inna Borshch!
В заявке автора не было вопроса о том, как прописать новое название в Properties файла (Title).
Поиск мне "предложил":
ThisWorkbook.BuiltinDocumentProperties("Title") = "Новое имя"
P.S.
1. Новое имя можно задавать явно (не явно).
2. Поскольку я - не профессионал, не могу сказать, как применить семейство свойств книги BuiltinDocumentProperties к файлам других типов.
3. Рекомендую обратиться к профессионалам.
 
Спасибо Мотя, за ответ и за наводку. Попробую разобраться.
И ещё один вопрос.
Текст файла - его основа всегда одинаковая, но ежедневно добавляется дата в названии файла (это исходник), а переименовать надо всегда по образцу.
Пример: "mama mila ramu 01.02.2014" - > "Ochenj krasivaja mama mila ramu".

Как поставить смотреть на совпадение содержания? (if contain "mama mila ramu%" then "Ochenj krasivaja mama mila ramu").
Не подскажете?

Заранее благодарю.
 
Инна, что Вам мешает создать свою тему? Эту тему закрываю, пока Вы её в помойку своих вопросов не превратили.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist

На мой взгляд, хотя я могу и ошибаться, мои вопросы - это продолжение темы.
Я приму  во внимание Вашу рекомендацию и напишу тоже самое в отдельной теме.

И хоть Вы модератор, это не даёт Вам право хамить.
 
Тема про переименованию по списку соответствия, а не про переименование на основании текста внутри файла.

А где я Вам нахамил? Не вижу ни капли хамства в своем сообщении. Или Вас оскорбляет, что тема будет помойкой, если в неё все вопросы сваливать? Советую перечитать правила форума тогда. И на всякий случай заглянуть в википедию и прочитать значение слова "хамить".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
День добрый!
В сообщении №4 https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=54798&am...
в файле есть макрос. Подскажите пожалуйста как отключить чувствительность к регистру.
 
Avercom, первой строкой модуля (до Sub) поставьте
Код
Option Compare Text
 
Спасибо Вам большое!
Хороший Вы человек.
Все работает
 
Если кто-то не может скачать файл пользователя Мотя
В эксель столбец А - старое название с расширением, В - новое название с расширением
Сам макрос
Код
Sub CHANGE_NAME_FILE()
Application.ScreenUpdating = 0
Application.DisplayAlerts = 0
Dim Im_Main, Put_File, sch_VERT As Variant
Dim FS, KATALOG, FILE, MASSIV As Object
Dim II, JJ As Integer
    Range("C2:C65000").Select
    Selection.ClearContents
sch_VERT = Cells(1, 1).End(xlDown).Row - 1
Dim OLD_NAME(), NEW_NAME() As Variant
ReDim OLD_NAME(sch_VERT, 1), NEW_NAME(sch_VERT, 1)
    Range("A1:B" + Trim(Str(sch_VERT + 1))).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
OLD_NAME = Range(Cells(2, 1), Cells(2 + sch_VERT, 1))
NEW_NAME = Range(Cells(2, 2), Cells(2 + sch_VERT, 2))
Im_Main = ActiveWorkbook.Name
Put_File = Application.ActiveWorkbook.Path + "\"
Set FS = CreateObject("Scripting.FileSystemObject")
Set KATALOG = FS.GetFolder(Put_File)
Set MASSIV = KATALOG.Files
If Dir(Put_File + "OUT\", vbDirectory) = "" Then
    MkDir (Put_File + "OUT\")
End If
If Dir(Put_File + "OUT\", vbDirectory) <> "" Then
   'If Len(Dir(Put_File + "OUT\*.*")) > 0 Then
      'Kill (Put_File + "OUT\*.*")
   'End If
For II = 1 To sch_VERT
    For Each FILE In MASSIV
        If Dir(FILE) = OLD_NAME(II, 1) And Dir(FILE) <> Im_Main Then
           FileCopy FILE, Application.ActiveWorkbook.Path + "\OUT\" + NEW_NAME(II, 1)
           Cells(II + 1, 3).Value = "íàéäåí"
        End If
    Next
Next 'ii
MsgBox "ГОТОВО"
End If
Application.ScreenUpdating = 1
Application.DisplayAlerts = 1
End Sub
Спасибо!
Изменено: utoFlowers - 21.03.2019 21:47:53
 
Подскажите, можно ли сделать тоже самое, только не учитывая расширения? Чтобы эксель находил имя, переименовывал на нужное и не трогал расширение.
Страницы: 1
Наверх