Vba: excluir planilha se o nome contiver texto específico
Você pode usar a seguinte sintaxe no VBA para excluir cada planilha em uma pasta de trabalho do Excel que contém um texto específico:
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
Ao executar esta macro específica, uma caixa de entrada aparecerá onde você poderá inserir uma sequência de texto específica.
Depois de pressionar Enter, cada planilha da pasta de trabalho do Excel que contém esse texto específico será excluída automaticamente.
Nota : A linha Application.DisplayAlerts=False informa ao VBA para não exibir o processo de exclusão de planilhas, o que agiliza sua execução.
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: use VBA para excluir planilhas contendo texto específico
Suponha que temos a seguinte pasta de trabalho do Excel contendo quatro planilhas:
Agora digamos que queremos excluir todas as planilhas que possuem “Equipe” no nome da planilha.
Podemos criar a seguinte macro para fazer isso:
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
Ao executar esta macro, aparece uma caixa de entrada onde podemos inserir o texto que queremos pesquisar nos nomes das planilhas:
Depois de digitar “Equipe” e pressionar OK , os nomes das planilhas que contêm “Equipe” em qualquer lugar do nome serão excluídos automaticamente:
Observe que as duas planilhas com “Equipe” no nome da planilha foram removidas.
Todas as planilhas que não continham “Equipe” foram deixadas intactas.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:
VBA: Como contar o número de planilhas em uma pasta de trabalho
VBA: Como extrair dados de outra pasta de trabalho
VBA: como inserir múltiplas linhas