Do Básico ao Avançado
Home  Tutoriais  Artigos  Contato

Macro para pesquisar na tabela e destacar a linha.

Neste tutorial criaremos uma macro que fará busca em uma tabela e assim que o termo da busca for localizado será aplicado automaticamente um sombreamento na cor verde claro para destacar o local (linha ou linhas da tabela) onde o termo pesquisado se encontra.

O termo a ser pesquisado pode ser um nome ou sobrenome, um número, uma data, um caractere especial, ou qualque palavra.


Veja um breve exemplo de como vai funcionar a nossa macro. Observe a imagem da tabela abaixo que contém uma lista com o nome e a data de nascimento de várias pessoas:

macro para buscar na tabela

Digamos que queremos localizar e destacar todas as pessoas que nasceram, por exemplo, em 1980.

Executamos a macro e na InputBox informamos termo a ser pesquisado, que neste exemplo é o ano 1980.

InputBox

Veja o resultado e note que as linhas da tabela que contém pessoas nascidas em 1980 foram destacadas na cor verde claro.

Termo da Busca

Criando a macro.

Na Guia Desenvolvedor, no Grupo Código clique emVisual Basic.

Visual Basic

No Editor do Visual Basic clique no menu Inserir e em seguida clique em Módulo.

Inserir Módulo

Na Janela de Código adicione o seguinte código:

Sub BuscaPalavraNaTabela()
Application.ScreenUpdating= False

'Declara as variáveis
Dim TblRng As Range, TmpRng As Range
Dim vText As String

'A variável vText é igual ao valor informado na InputBox
vText = InputBox("Informe o termo da busca (texto, número, data, frase, etc)", "Buscar")

'Seleciona a primeira tabela contida no documento
ActiveDocument.Tables(1).Select

'Limpa todas as células que porventura estejam com sombreamento
Selection.Shading.BackgroundPatternColor = wdColorAutomatic

'Procura na tabela pela palavra, texto ou frase informada na InputBox e atribui o sombreamento na cor verde claro na linha
With ActiveDocument.Tables(1)
Set TblRng = .Range: Set TmpRng = .Range
With .Range
With .Find
   .ClearFormatting
    .Replacement.ClearFormatting
    .Text = vText
    .Replacement.Text = ""
.Forward = True
     .Format = False
     .Wrap = wdFindStop
    .MatchCase = True
     .MatchWholeWord = True
   .MatchWildcards = False
     .MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While.Find.Found
If .InRange(TblRng) Then
     TmpRng.Collapse wdCollapseEnd
     .Rows(1).Select
      .Rows(1).Cells.Shading.BackgroundPatternColor = wdColorBrightGreen 'Especifica a cor do sombreamento
End If
.Find.Execute
Loop
End With
End With

'Atualiza a tela
Application.ScreenUpdating = True
End Sub

Deverá ficar como na imagem abaixo:

Código da macro busca palavra na tabela

Comentando a execução do código

Sub BuscaPalavraNaTabela()

Através da instrução Sub é atribuída o nome “BuscaPalavraNaTabela” à nossa macro e em seguida é declarado todos os argumentos do código que fazem parte do procedimento Sub.

vText = InputBox("Informe o termo da busca (texto, número, data, frase, etc)", "Buscar")

A função InputBox é uma caixa de mensagem interativa, onde o usuário pode inserir dados, e no código desta macro usamos esta função para que o usuário possa informar o termo da busca que neste exemplo pode ser o nome ou parte do nome, a data de nascimento ou parte da data, como: somente o dia, somente o mês ou somente o ano.

O valor informado na InputBox é guardado na variável vText.

ActiveDocument.Tables(1).Select

Seleciona a primeira tabela do documento ativo. O número 1 entre parênteses se refere a primeira tabela do documento, porém, caso o documento contenha várias tabelas e você deseja, por exemplo, fazer uma busca na terceira tabela basta alterar o número que está entre parênteses para 3: ActiveDocument.Tables(3).Select.

Selection.Shading.BackgroundPatternColor = wdColorAutomatic

Essa linha de código retira o sombreamento de todas as células da tabela que porventura estejam com algum sombreamento.

Isso é necessário para que quando uma nova busca for feita as células da tabela esteja sem nenhum preenchimento de sombreamento.


With ActiveDocument.Tables(1)
Set TblRng = .Range: Set TmpRng = .Range
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
   .Text = vText
     .Replacement.Text = ""
   .Forward = True
     .Format = False
     .Wrap = wdFindStop
     .MatchCase = True
      .MatchWholeWord = True
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
     .Execute
End With
Do While .Find.Found
If .InRange(TblRng) Then
      TmpRng.Collapse wdCollapseEnd
        .Rows(1).Select
       .Rows(1).Cells.Shading.BackgroundPatternColor = wdColorBrightGreen 'Especifica a cor do sombreamento
End If
     .Find.Execute
Loop
End With
End With

Nas linhas de código acima utilizamos o método Find para pesquisar na 1ª tabela do documento ativo a palavra ou termo informado na InputBox. A busca percorre por todas as linhas da tabela e sempre que o termo da busca for encontrado a linha em que ela se encontra recebe um sombreamento na cor verde claro.

Você pode alterar a cor do sombreamento alterando a linha de código:

.Rows(1).Cells.Shading.BackgroundPatternColor = wdColorBrightGreen

cor do sombreamento

Como executar a macro

Feche o Editor do Visual Basic para voltar ao Word clicando em Arquivo e depois em Fechar e voltar para Microsoft Word.

Fechar o Visual Basic e voltar ao Word

Na Guia Desenvolvedor, no grupo Código clique em Macros.

Macros

Na caixa de diálogo Macro selecione a macro BuscaPalavraNaTabela e clique no botão Executar.

Executar Macro

Surgirá a InputBox para você informar o texto da busca. Neste exemplo vamos procurar por todos aqueles que têm o sobrenome Silva.

buscar na tabela

Veja o resultado:

linhas com sombreamento

Faça o download do exemplo usado neste tutorial: Baixar Arquivo




Formação Pacote Office



eBook Word 2010 VBA
Política de Privacidade  |   © 2013 Tutoriais Word - Todos os direitos reservados