Vba: elimina il foglio se il nome contiene testo specifico
È possibile utilizzare la seguente sintassi in VBA per eliminare ogni foglio in una cartella di lavoro di Excel che contiene testo specifico:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Quando esegui questa particolare macro, verrà visualizzata una casella di input in cui puoi inserire una stringa di testo specifica.
Dopo aver premuto Invio, ogni foglio nella cartella di lavoro di Excel contenente quel testo specifico verrà automaticamente eliminato.
Nota : la riga Application.DisplayAlerts=False indica a VBA di non visualizzare il processo di eliminazione dei fogli, il che ne accelera l’esecuzione.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: utilizzare VBA per eliminare fogli contenenti testo specifico
Supponiamo di avere la seguente cartella di lavoro Excel contenente quattro fogli:
Ora supponiamo di voler eliminare ogni foglio che contiene “Squadra” nel nome del foglio.
Per fare ciò possiamo creare la seguente macro:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Quando eseguiamo questa macro, appare una casella di input in cui possiamo inserire il testo che vogliamo cercare nei nomi dei fogli:
Dopo aver digitato “Squadra” e premuto OK , i nomi dei fogli che contengono “Squadra” in qualsiasi punto del nome verranno automaticamente eliminati:
Tieni presente che i due fogli con “Squadra” nel nome del foglio sono stati rimossi.
Tutti i fogli che non contenevano “Squadra” sono stati lasciati intatti.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
VBA: come contare il numero di fogli in una cartella di lavoro
VBA: come estrarre i dati da un’altra cartella di lavoro
VBA: come inserire più righe