Tramite questa macro è possibile creare un comando che permetta di inserire un numero desiderato di fogi in una cartella di Excel assegnando contestualmente  un nome ad ognuno di loro; vediamo come.

Prima di tutto dovendo lavorare in VBA apriamo il relativo ambiente.

In Excel 2003
Menù Strumenti – Macro – Visual Basic Editor

In Excel 2007
Bottone di Office – Pulsante Opzioni di Excel – Impostazioni generali – Opzione “Mostra scheda Sviluppo sulla barra multifunzione”
A questo punto ritornando nella finestra di Excel verrà visualizzata anche la Scheda Sviluppo nella quale troviamo il pulsante Visual Basic

In Excel 2010
File – Opzioni – Personalizzazione barra multifunzione – Selezionare Sviluppo nella sezione “Schede principali”

Nella finestra Visual Basic inserire un nuovo modulo (menù Inserisci – Modulo)

Copiare nel modulo il codice riportato sotto:

Sub NuoviFogli()
Dim Sh As Worksheet
Dim NomeFoglio As String
Dim doppio As String
Dim NomeBuono As Boolean
Dim CaratteriVietati
CaratteriVietati = “:/?*[]”
Dim i, j As Integer
Dim quanti As Integer
Dim n As Integer
quanti = InputBox(“Quanti fogli nuovi vuoi inserire?”, “Numero fogli nuovi”)
For n = 1 To quanti
Do
NomeBuono = True
NomeFoglio = InputBox(“Qual’ è il nome che vuoi dare al nuovo foglio (” & n & “)?”, _
“Nominare il nuovo foglio”)
If NomeFoglio <> “” Then
‘verifica se il nome non esiste
For i = 1 To ActiveWorkbook.Worksheets.Count
If UCase(NomeFoglio) = UCase(Worksheets(i).Name) Then
doppio = MsgBox(“Un foglio con il nome scelto è già presente, vuoi sostituirlo?”, vbYesNo + vbOKOnly, _
“Nome già usato”)
If doppio = vbYes Then
‘sostituisce il messaggio Allert di Excel
allarme = MsgBox(“Nel foglio potrebbero esistere dei dati,” _
& ” per eliminare in modo permanente il foglio scegliere Ok”, vbCritical + vbOKCancel, “Messaggio di allarme”)
If allarme = vbOK Then
Application.DisplayAlerts = False
Worksheets(NomeFoglio).Delete
Application.DisplayAlerts = True
Exit For

Else
NomeBuono = False
Exit For
End If

Else
NomeBuono = False
Exit For
End If
End If

Next
‘verifica che il nome non abbia più di 31 caratteri
If Len(NomeFoglio) > 31 Then
MsgBox “Il numero dei caratteri (” & _
Len(NomeFoglio) & “) del nome è troppo grande,” _
+ vbCrLf + ” il massimo è 31 per excel.”, _
vbCritical + vbInformation, “Nome troppo lungo”
NomeBuono = False
End If

‘verifica se nel nome non ci sono caratteri vietati
For j = 1 To Len(CaratteriVietati)
If InStr(1, NomeFoglio, Mid(CaratteriVietati, j, 1), vbTextCompare) > 0 Then
MsgBox “I caratteri seguenti : ” & _
CaratteriVietati & ” sono vietati nel nome del foglio.”, _
vbCritical + vbOKOnly, “Carattere vietato “
NomeBuono = False

Exit For
End If
Next

Else
Exit Sub
End If
Loop Until NomeBuono = True

Set Sh = Worksheets.Add ‘per aggiungere come primo foglio
‘o per aggiungere il foglio come ultimo Set Sh = Worksheets.Add(after:=Worksheets(Worksheets.Count))
Sh.Name = NomeFoglio
Next n
End Sub

Chiudere la finestra di Visual Basic e tornare in Excel.

Passiamo quindi all’elenco delle Macro

In Excel 2003
Strumenti -> Macro -> Macro

In Excel 2007 o 2010
Scheda Sviluppo -> Pulsante Macro

Eseguire quindi la Macro “NuoviFogli”: apparirà una finestra di dialogo nella quale dovremo indicare quanti fogli vogliamo inserire nella cartella di Excel; cliccando su Ok dovremo indicare in successione il nome di ogni foglio che verrà inserito.

Infine se vogliamo rendere disponibile questa funzione in modo tale da trovarla all’avvio di ogni cartella di Excel possiamo creare un componente aggiuntivo come specificato qui.

Informatics, ski racer, loves Finland, Norway, mountains, squash, photography, Drones and RC Helicopter – Snapchat: andrea.perotti

Translate »