Have a look at the following link:-
It is a test work book for a Poster I helped a couple of months ago with a very similar query to yours.
In the above test work book, there is a Template sheet and a Summary sheet. The code creates and names new sheets for each ID in Column B of the Summary sheet with each sheet being a copy of the Template. Each client name is also placed in cell A1 of each sheet. Click on the "RUN" button to see it work.
There aren't any formulae in this example but, if there were, they would all be copied over to each new sheet.
The code associated with this example is as follows:-
Dim wsSumm As Worksheet, wsTmp As Worksheet
Dim shtNames As Range, N As Range
Set wsTmp = .Sheets("Template")
Set wsSumm = .Sheets("Summary")
Set shtNames = wsSumm.Range("B2:B" & Rows.Count).SpecialCells(xlConstants)
Application.ScreenUpdating = False
For Each N In shtNames
If Not Evaluate("ISREF('" & CStr(N.Text) & "'!A1)") Then
ActiveSheet.Name = CStr(N.Text)
ActiveSheet.Range("A1").Value = N.Offset(, -1).Value
Application.ScreenUpdating = True
Let us know what you think.