Доброго времени суток всем!
Прошу помочь с решением очередной задачки по VBA.
Ранее был написан макрос для раскидывания листов excel по создаваемым файлам. Все было замечательно до тех пор, пока не возникла необходимость переименовывать листы в создаваемых файлах. В исходном файле изменять наименования листов нельзя.
На листе "Mapping" исходного файла представлены две таблицы:
- левая содержит соответствие старых и новых имен листов,
- правая - содержит перечень листов, которые должны переноситься в определенные файлы.
Пробовал решить задачу путем добавления нового цикла For...Next в уже существующий, но столкнулся с тем, что справочник находится в исходном файле, а листы которые надо переименовать - в другом. Как правильно обратиться к вновь создаваемым файлам найти у меня не получилось.
ниже привожу код VBA:
Добавив второй цикл, я ничего не добился, только макрос прекращает свое действие, а файл закрывается.
Прошу подсказать, как можно обращаться к разным файлам в данном случае.
Заранее спасибо всем откликнувшимся!
P.S. файл с примером в приложении
Прошу помочь с решением очередной задачки по VBA.
Ранее был написан макрос для раскидывания листов excel по создаваемым файлам. Все было замечательно до тех пор, пока не возникла необходимость переименовывать листы в создаваемых файлах. В исходном файле изменять наименования листов нельзя.
На листе "Mapping" исходного файла представлены две таблицы:
- левая содержит соответствие старых и новых имен листов,
- правая - содержит перечень листов, которые должны переноситься в определенные файлы.
Пробовал решить задачу путем добавления нового цикла For...Next в уже существующий, но столкнулся с тем, что справочник находится в исходном файле, а листы которые надо переименовать - в другом. Как правильно обратиться к вновь создаваемым файлам найти у меня не получилось.
ниже привожу код VBA:
| Код |
|---|
Sub test_1()
Dim ws As Worksheet
Dim Filename
Dim NewFileName As String
Dim i&
Dim j&
Dim lLastRow_1 As Long
Dim lLastRow_2 As Long
Dim cell As Range
On Error Resume Next
lLastRow_1 = Sheets("Mapping").Cells(Rows.Count, 4).End(xlUp).Row
For i = 2 To lLastRow_1
Set Filename = ThisWorkbook.Sheets("Mapping").Cells(i, 4)
NewFileName = ThisWorkbook.Path & "\" & Filename & _
".xlsx"
ThisWorkbook.Sheets(Split(ThisWorkbook.Sheets("Mapping").Cells(i, 5))).Move
lLastRow_2 = Sheets("Mapping").Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To lLastRow_2
Set cell = Sheets("Mapping").Cells(i, 2)
Set ws = Worksheets
ActiveWorkbook.ws.Name = CStr(cell.Value)
Next
ActiveWorkbook.SaveAs Filename:=NewFileName
ActiveWorkbook.Close SaveChanges:=False
Next
End Sub
|
Добавив второй цикл, я ничего не добился, только макрос прекращает свое действие, а файл закрывается.
Прошу подсказать, как можно обращаться к разным файлам в данном случае.
Заранее спасибо всем откликнувшимся!
P.S. файл с примером в приложении