Прошу у Вас помощи. Есть много файлов. Все они типовые, и имеют значение ИНН в ячейке B1. Помогите создать макрос, который бы прочитал все файлы в папке, и переименовал бы все эти файлы согласно ИНН в ячейке B1.
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" пуста, либо содержит недопустимые символы, то такой файл не будет переименован. Устроит? Если файл с этим макросом находится в той же папке, в которой требуется переименование, то потребуется его "обходить" путем сравнения его имени с текущем именем файла в цикле.