Найти тему
Маленький человек

Переименовать файлы VBA

Оглавление
Обновление: 26.04.2020
Обновление: 26.04.2020

Проблема

На работе потребовалось переименовать группу файлов.

Делюсь макросом

ссылка на файл с макросом ФАЙЛ

Вся работа в 4 шага
Вся работа в 4 шага

Как это работает

  1. В поле FolderPath вставить полный путь к папке, в которой требуется заменить название файлов.
  2. обновить запрос Power Query
  3. В желтом столбце написать новые имена файлов
  4. нажать кнопку "произвести замену"

Описание:

  1. Работает на компьютерах от Office 2016 и старше.
  2. Для работы в других версиях потребуется установка Power Query и немного определить переменные, что в старших версиях xl уже не требуется.
  3. Макрос не проверяет уникальность ваших имен вся ответсвенность лежит на Вас лично.

Обязательное условие работы

  • Динамические таблицы:
    FolderPath с одной строкой в единственном поле FolderPath
    FileList
    с полями Format (расширение файла), OldText, NewText
  • Все динамические таблицы на одном листе!!!

Лист должен называться List1 (системное имя листа, а не название)

Код VBA

по ссылке есть подписи к коду

Sub rename()
FileListSt1 = "Format"
FileListSt2 = "OldText"
FileListSt3 = "NewText"
FolderPathSt1 = "FolderPath"
Set Tab_1 = List1.ListObjects("FileList")
Set Tab_2 = List1.ListObjects("FolderPath")
count_rowsFileList = Tab_1.ListRows.Count
FolderPath = Tab_2.ListColumns(FolderPathSt1).DataBodyRange(1).Value & "\"
For i = 1 To count_rowsFileList Step 1
file_format = Tab_1.ListColumns(FileListSt1).DataBodyRange(i).Value
file_OldName = Tab_1.ListColumns(FileListSt2).DataBodyRange(i).Value
file_NewName = Tab_1.ListColumns(FileListSt3).DataBodyRange(i).Value
OldName = FolderPath & file_OldName & file_format
NewName = FolderPath & file_NewName & file_format
Name OldName As NewName
Next i
End Sub

Код М

FileList название запроса.
Заменить на решетку ## особености ядекс ДЗЕн

let
Источник = Folder.Files(Excel.CurrentWorkbook(){[Name="FolderPath"]}[Content]{0}[FolderPath]),
"Другие удаленные столбцы" = Table.SelectColumns(Источник,{"Name", "Extension"}),
"Переименованные столбцы" = Table.RenameColumns("Другие удаленные столбцы",{{"Name", "OldText"}, {"Extension", "Format"}}),
"Переупорядоченные столбцы" = Table.ReorderColumns("Переименованные столбцы",{"Format", "OldText"}),
"Извлеченный текст перед разделителем" = Table.TransformColumns("Переупорядоченные столбцы", {{"OldText", each Text.BeforeDelimiter(_, ".", {0, RelativePosition.FromEnd}), type text}})
in
"Извлеченный текст перед разделителем"

Список всех моих статей в оглавлении.

Наука
7 млн интересуются