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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *