You actually don't need to have an incrementing number on the range name - you can make the range specific to that sheet, and all the ranges will therefore share the same names.

[VBA]Sub CreateNames()
Dim ws As Worksheet
Dim nm As Name
Dim strRange() As String
Dim i As Long


' capture a list of those range names referring to the control sheet
' assumes you want every range
For Each nm In ActiveWorkbook.Names
If Left(nm.RefersTo, 24) = "='Sample Control Sheet'!" Then
ReDim Preserve strRange(0 To 1, 0 To i)

strRange(0, i) = nm.Name
strRange(1, i) = nm.RefersTo
i = i + 1
End If
Next nm

' add those range names to all remaining sheets, but refer to the same cell addresses
' on the current sheet (in place of the control sheet)
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> shControl.Name Then
For i = 0 To UBound(strRange, 2)
ws.Names.Add strRange(0, i), Replace(strRange(1, i), "Sample Control Sheet", ws.Name)
Next i
End If
Next ws
End Sub
[/VBA]