If you put this in the ThisWorkbook code module.
Dim newSh As Boolean
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
newSh = True
Sh.Delete
Application.DisplayAlerts = True
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Me.Unprotect
Call unHideAll
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If newSh Then newSh = False: Exit Sub
Me.Protect
End Sub
and this in a normal module
Sub unHideAll()
Dim xsheet As Worksheet
For Each xsheet In ThisWorkbook.Sheets
xsheet.Visible = xlSheetVisible
Next xsheet
End Sub
It will prevent sheets from being added, deleted or hidden.
It works because a sheet must be deactivated before it is deleted.