Private Sub Add_And_SynchronizeName()
iNewName$ = "Archive" 'укажите своё имя листа
With ThisWorkbook
If Not .ProtectStructure Then
.Worksheets.Add.Name = iNewName$
With .VBProject.VBComponents
.Item(.Count).Name = iNewName$
End With
Else
MsgBox "В рабочей книге : " & .Name & vbCrLf & _
"невозможно создание нового листа", vbCritical, ""
End If
End With
End Sub
code: #vba
Private Sub Add_And_SynchronizeName2()
iNewName$ = "Archive2" 'укажите своё имя листа
With ThisWorkbook
If Not .ProtectStructure Then
Dim iWorksheet As Worksheet
Set iWorksheet = .Worksheets.Add
iWorksheet.Name = iNewName$
Dim iVBComponents As Object
Set iVBComponents = .VBProject.VBComponents
iVBComponents(iWorksheet.CodeName).Name = iNewName$
Else
MsgBox "В рабочей книге : " & .Name & vbCrLf & _
"невозможно создание нового листа", vbCritical, ""
End If
End With
End Sub
Для создания общего имени необходимо учитывать особенности каждого имени, т.к. у каждого имени существуют свои ограничения:
Имя (Name):
Имя нового рабочего листа не должно совпадать с именами уже имеющихся листов (Sheets)
Имя листа не должно содержать более 31 символа.
Имя листа не должно содержать следующих символов / \ ? : *
кроме того, существует ограничение на порядок ввода [ ]
Кодовое (программное) имя (CodeName):
Кодовое имя нового рабочего листа не должно совпадать с кодовыми именами уже имеющихся рабочих листов и листов диаграмм (Worksheets & Charts)
Кодовое имя рабочего листа не должно содержать более 31 символа.
Первый символ в имени должен быть только буквой (кодовое имя не может начинаться с числовых значений или символа подчёркивания)
Кодовое имя может содержать только буквы, числовые значения и символ подчёркивания (и не может содержать только числа и/или символ подчёркивания см. пункт 3)