Buon giorno a tutti,
non mi sembra una soluzione molto elegante però sono riuscito a risolvere il mio problema, utilizzo un foglio come format e lo replico rinominando ogni nuovo singolo foglio prendendo il nome da un elenco così come la prima colonna (l'idea è che una volta ricevuti gli n. fogli con un unico passaggio li posso aggregare), nella fase di copia ogni foglio viene protetto da password.
Sub Copia_e_nomina_fogli()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim Nr As Integer
Dim NomeDip As String
Application.ScreenUpdating = False
Set sh1 = Worksheets("Orario")
Set sh2 = Worksheets("Complessivo")
'cicla l'elenco dei nomi
For i = 2 To sh2.Cells(Rows.Count, 1).End(xlUp).Row
'se la prima cella dell'elenco non è vuota
If sh2.Cells(i, 1) <> "" Then
NomeFoglio = RTrim(sh2.Cells(i, 1))
NomeFoglio = Replace(Replace(NomeFoglio, " - ", "_"), " ", "_")
Sheets("Orario").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = NomeFoglio
'assegna il nome alla prima colonna del foglio
ActiveSheet.Cells(2, 1).Value = Sheets("Complessivo").Cells(i, 1)
'conta il numero di record della colonna precompilata che verrà distribuita
LastRow = sh1.UsedRange.Rows.Count
'riempie con il nome del dipendente la colonna, ricorda di aggiornare il count delle righe
For Nr = 2 To LastRow
ActiveSheet.Cells(Nr, 1).Value = NomeFoglio
Next
ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True
Sheets(NomeFoglio).Move After:=Sheets(Worksheets.Count)
End If
Next i
Sheets("Menu").Select
Application.ScreenUpdating = True
End Sub
Accetto ovviamente consigli su errori occulti o migliorie
Grazie a tutti.
buona giornata.