Страницы: 1
RSS
Переименование файлов Excel в папке
 
Уважаемые форумчане, помогите разобраться.
Имеются файлы с названиями Число1_Число2_Число3.xls в папке.
Необходимо сделать макрос, чтобы из определенного файла Excel Название.xls в названиях файлов в папке он массово переименовывал Число1, Число2, Число3 в названиях файлов в соответствующее значение из таблицы файла Название.xls.

Спасибо заранее.
 
может это подойдет
 
Без VBA не обойтись.
В нашем случае можно воспользоваься, к примеру, методом movefile объекта filesystemobject.
Делаем цикл над файлами, которые хотим переименовать, и используем означенный выше метод.
Удачи.
Изменено: Все_просто - 09.01.2016 09:50:13
С уважением,
Федор/Все_просто
 
Как средствами VBA переименовать/переместить/скопировать файл

а циклы уж сами к этому прикрутите. Или готовый вариант: Пакетное переименование файлов
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо, постараюсь что-нибудь сделать. Но в силу того, что я только учусь в макросах, думаю, мне будет чрезвычайно сложно воплотить.
 
Что только я не делал все эти дни, ничего не получается. Может кто поможет.
Я несколько иначе сформулирую задачу, которая предстала передо мной.

Имеются файлы Excel в некоторой папке. Названия их разные и пусть ценности не представляют. Необходимо переименовать каждый файл с учётом внутренней информации каждого из этих них. Например, в каждом файле имеется разная информация в ячейках А2, А10. Нужно, чтобы каждый файл поменял имя на то, что у него содержится в указанных ячейках. То есть все файлы с названием Кракозябра.xls должны теперь именоваться как А2А10.xls

В VBA старательно учусь и, поэтому прошу подоступнее объяснить. Надеюсь на понимание.

Спасибо.
 
Цитата
ordomal написал: В VBA старательно учусь
Ну так приложите файл с теми кодами, которые получились самостоятельно, пусть и не рабочие. Пока никаких попыток изучить VBA не видать. Видно только попытки получить готовое решение.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
На одном форуме видел код, пытался с ним что-то сделать:
Код
[SIZE=8pt]Sub Main()[/SIZE]
[SIZE=8pt]    Dim SourceFolder As String, DestinationFolder As String, ce As Range[/SIZE]
[SIZE=8pt]    InitialPath = ThisWorkbook.Path: Dim coll As New Collection[/SIZE]
[SIZE=8pt]    Application.ScreenUpdating = False[/SIZE]

[SIZE=8pt]    SourceFolder = GetFolderPath("Выберите исходную папку для поиска файлов", InitialPath)[/SIZE]
[SIZE=8pt]    If SourceFolder = "" Then MsgBox "Необходимо указать папку!", vbCritical, "Папка не выбрана": Exit Sub[/SIZE]

[SIZE=8pt]    DestinationFolder = GetFolderPath("Выберите папку, в которую будет производиться копирование", SourceFolder)[/SIZE]
[SIZE=8pt]    If DestinationFolder = "" Then MsgBox "Необходимо указать папку!", vbCritical, "Папка не выбрана": Exit Sub[/SIZE]

[SIZE=8pt]    On Error Resume Next[/SIZE]
[SIZE=8pt]    If Dir(DestinationFolder, vbDirectory) = "" Then MkDir DestinationFolder    ' если конечная папка не существует, создаём её[/SIZE]

[SIZE=8pt]    Filename = Dir(SourceFolder & "*.xls")[/SIZE]
[SIZE=8pt]    Dim wb As Workbook, sh As Worksheet[/SIZE]
[SIZE=8pt]    While Filename <> ""[/SIZE]
[SIZE=8pt]        coll.Add Filename: Filename = Dir[/SIZE]
[SIZE=8pt]    Wend[/SIZE]

[SIZE=8pt]    For Each file In coll[/SIZE]
[SIZE=8pt]        Set wb = Workbooks.Open(SourceFolder & file, , True)[/SIZE]
[SIZE=8pt]        Application.StatusBar = "Обрабатывается файл  " & file    ' вывод информации в строку состояния[/SIZE]
[SIZE=8pt]        Set sh = wb.Worksheets(3) ' замените на Set sh = wb.Worksheets(1)[/SIZE]
[SIZE=8pt]        NewFilename = НовоеИмяФайла(sh.Cells(3, 4), sh.Cells(12, 4))[/SIZE]
[SIZE=8pt]        wb.SaveAs DestinationFolder & NewFilename[/SIZE]
[SIZE=8pt]        wb.Close False[/SIZE]
[SIZE=8pt]    Next[/SIZE]

[SIZE=8pt]    Application.StatusBar = ""[/SIZE]
[SIZE=8pt]End Sub[/SIZE]

[SIZE=8pt]Function НовоеИмяФайла(ByVal cell2 As String, ByVal cell8 As String) As String[/SIZE]

[SIZE=8pt]    arr = Split(cell3, " ")[/SIZE]
[SIZE=8pt]    For i = LBound(arr) To UBound(arr)[/SIZE]
[SIZE=8pt]        НовоеИмяФайла = НовоеИмяФайла & Left(arr(i), 1)[/SIZE]
[SIZE=8pt]    Next[/SIZE]
[SIZE=8pt]    НовоеИмяФайла = UCase(НовоеИмяФайла)[/SIZE]

[SIZE=8pt]    дата = Split(cell12, " ")(1)[/SIZE]
[SIZE=8pt]    If IsDate(дата) Then НовоеИмяФайла = НовоеИмяФайла & " " & LCase(Format(дата, "MMMM YYYY"))[/SIZE]
[SIZE=8pt]    НовоеИмяФайла = НовоеИмяФайла & ".xls"[/SIZE]
[SIZE=8pt]End Function[/SIZE]

[SIZE=8pt]Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", Optional ByVal InitialPath As String = "c:\") As String[/SIZE]
[SIZE=8pt]    GetFolderPath = "": PS = Application.PathSeparator[/SIZE]
[SIZE=8pt]    With Application.FileDialog(msoFileDialogFolderPicker)[/SIZE]
[SIZE=8pt]        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath[/SIZE]
[SIZE=8pt]        If .Show = -1 Then GetFolderPath = .SelectedItems(1): If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS[/SIZE]
[SIZE=8pt]    End With[/SIZE]
[SIZE=8pt]End Function[/SIZE]

Не нужно было шрифт выделять, кнопка оформления кода в сообщении - <...>

Он очень подходит для реализации идеи, но у меня ничего не получается. Идею брал http://www.programmersforum.ru/showthread.php?t=60191
Необходимо данные взять из ячеек D3 и D12.

Прикладываю тоже файлы как должно быть и как было
 
ПЕРЕИМЕНОВАНИЕ файлов в той же папке
Путь задайте свой.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, спасибо большое. Все отлично работает
 
Имеется такая проблема при реализации этой идеи у меня.
Дело в том, что файлы, которые изначально выгружаются для переименования, при открытии выдают сообщение: "Формат файла не соответствует разрешению файла". Лечу это всегда просто нажатием на "Сохранить как" и сохраняю опять с тем же именем, с тем же расширением, и потом файл нормально открывается.
Можно ли в этой связи как-нибудь прикрутить что-нибудь, чтобы перед переименованием все файлы были пересохранены с тем же названием и расширением?
Файл с сообщением, которое выдается, прикладываю.
Спасибо.
 
Прошу помочь в решении проблемы
 
Это нестандартное переименование. Может из этого кода что-нибудь полезное пригодиться.
 
ordomal,
У меня получилось эту задачу решить с помощью Варианта от "artyrH" с notepad++   и Формулы от "Казанского". Даже сделала пошаговую инструкцию как этот приём использовать:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=116462&a...
 
Olga H., вы полагаете, что подобные вопросы могут быть актуальны для вопрошающего в течение 4 лет?
Страницы: 1
Наверх