Страницы: 1
RSS
Переименовать файлы в папке согласно ИНН в шапке
 
Добрый день, Товарищи!

Прошу у Вас помощи. Есть много файлов. Все они типовые, и имеют значение ИНН в ячейке B1. Помогите создать макрос, который бы прочитал все файлы в папке, и переименовал бы все эти файлы согласно ИНН в ячейке B1.
Изменено: Sandji - 15.11.2017 11:04:37 (Поправил адрес ячейки, правильно B1( было B2))
 
1. Значение ячейки "B2" всегда брать из 1-го листа?
2. Что делать, если эта ячейка пуста?
3. Что делать, если ячейка содержит недопустимые (для имени книги) символы?
4. Что делать, если файл с этим именем уже имеется в папке?
Чем шире угол зрения, тем он тупее.
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

1.B2 всегда с 1-го листа,
2. Если пуста то сообщить, пропустить, продолжить дальше
3. Исключено, но если так, то сообщить, пропустить, продолжить дальше
4. Если файл с этим именем уже имеется, сообщить, и пусть пропустит его
 
Если имя 1-го листа во всех файлах совпадает, то можно получить значение не открывая файл, что предпочтительно.
Код
Sub Main()
    Dim p As String, f As String, arg As String, s As String, sh As String, wb As Workbook
    Application.ScreenUpdating = False: On Error Resume Next
    p = "C:\Temp" & "\" 'Папка с файлами
    sh = "Анализ 1"     'Имя листа
    f = Dir(p & "*.xls")
    Do While f <> ""
        arg = "'" & p & "[" & f & "]" & sh & "'!" & Range("B1").Range("A1").Address(, , xlR1C1)
        s = ExecuteExcel4Macro(arg)
        If s <> 0 Then Name p & f As p & s & ".xls"
        f = Dir
    Loop
End Sub
В этом примере, если ячейка "B1" пуста, либо содержит недопустимые символы, то такой файл не будет переименован.
Устроит?
Если файл с этим макросом находится в той же папке, в которой требуется переименование, то потребуется его "обходить" путем сравнения его имени с текущем именем файла в цикле.
Изменено: SAS888 - 15.11.2017 11:45:42
Чем шире угол зрения, тем он тупее.
 
SAS888, да, имя листа везде одинаково. Да конечно ) спасибо Огромное!!
Страницы: 1
Читают тему
Наверх