Here is step one. PLease note that we are not checking to see if there are illegal names in Col A, and probably a bigger worry, we are not checking to see if the sheets already exist.
Option Explicit
Public Sub CreateSheets()
Dim i As Long
Dim wks As Worksheet
With Sheet4 '<---Using codename, or, using sheetname--> ThisWorkbook.Worksheets("Schools")
For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row
'// Copy the Template sheet to the end of the wb, then set a reference to //
'// new sheet. Note that cell O23 will be truncated. //
.Parent.Worksheets("Template").Copy After:=.Parent.Worksheets(.Parent.Worksheets.Count)
Set wks = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
'// Rename, then (based on Template currently being protected, but no //
'// password required) protect new sheet w/UserInterfaceOnly argument set to//
'// True. This way we can get O23 'copied' over correctly. //
wks.Name = .Cells(i, "A").Value2
wks.Protect Password:="", DrawingObjects:=True, _
Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
'// Get your entire instructions to O23 in the new sheet //
wks.Range("O23").Value = .Parent.Worksheets("Template").Range("O23").Value
Next
End With
End Sub
Mark