Я предлагаю обрезать предполагаемое имя, заменить 7 запрещенных символов и сократить его до максимально допустимого значения: 31 символ:
Private Function NewTableName(ByRef IntendedName As String) As String
Dim s As String
s = Application.Trim(IntendedName)
s = Replace(s, ":", "-")
s = Replace(s, "\", "-")
s = Replace(s, "/", "-")
s = Replace(s, "?", "-")
s = Replace(s, "*", "-")
s = Replace(s, "[", "-")
s = Replace(s, "]", "-")
NewTableName = Left(s, 31)
End Function
Наконец: вы получаете сообщение об ошибке, если вы пытаетесь переименовать секундулист с именем уже существующего листа.Поэтому вы должны проверить его существование раньше.