Чтобы добавить лист в конце и назвать его за один раз, попробуйте что-то вроде:
Thisworkbook.Sheets.Add(After:=Thisworkbook.Sheets(Thisworkbook.Sheets.Count)).Name = "Your sheet name goes here"
В соответствии с вашим последним вопросом, я также упомянул, что лучше установить объект рабочей книги и указать, что:
Dim wb as Workbook: Set wb = ThisWorkbook
Это сделает приведенный выше код намного чище:
With wb
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Your sheet name goes here"
End with
Чтобы сделать шаг вперед и получить имя текущей книги, вы можете использовать:
myVal = wb.Name 'Will get you with extension
myVal = Split(wb.Name, ".")(0) 'Will get you name without extension
И, как уже упоминалось в комментариях, вы также можете использовать своего рода счетчик. Но, согласно вашему текущему коду, для этого нет цикла. Вышесказанное сводится к следующему:
Dim wb as Workbook: Set wb = ThisWorkbook
With wb
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Split(wb.Name, ".")(0) & "Your counter goes here"
End with
И на sidenote (также в соответствии с вашим последним вопросом) посмотрите этот пост на SO, чтобы начать радикально улучшать ваш код.