Lissa pergunta:
Existe uma maneira de alterar um número (sempre um número aleatório) após a palavra raposa? Exemplo: raposa 23, urso 1, raposa 398, sapo 12, raposa 15. Quero mudar o número para a mesma cor da palavra raposa.
Podemos localizar e substituir por formato no Microsoft Word. Este é um ótimo recurso para localizar rapidamente o texto formatado e até mesmo substituir todo o formato do texto no documento.
Selecione Localização Avançada na faixa de opções.

Insira o texto a ser encontrado, clique no botão Mais para ver as opções avançadas e clique no botão Formatar.

Selecione a opção Fonte nas configurações, então você pode configurar a cor do texto que você gostaria de encontrar no documento. Clique em OK para fechar a janela de diálogo Localizar fonte.

Clique em Localizar próximo e você verá que a primeira ocorrência do texto pesquisado em uma determinada cor será selecionada.

Também podemos fazer pesquisas mais complicadas usando curingas. No entanto, o módulo de pesquisa nativo do Word não nos permite fazer uma pesquisa como Lissa pediu.
É aí que podemos chamar RegEx para o jogo!
Biblioteca de expressões regulares VBSCript
O VBA não vem com nenhum suporte para expressões regulares. No entanto, a biblioteca Microsoft VBScript contém recursos poderosos de expressão regular. Esta biblioteca faz parte do Internet Explorer 5.5 e posterior, portanto, está disponível em todos os computadores que executam o Windows XP, Vista, 7, 8, 8.1 ou 10.
Usuários Mac
Como o Internet Explorer não é um aplicativo Mac, esta biblioteca não existe no Mac. Portanto, os exemplos de VBA abaixo não funcionam no Mac.
Para usar esta biblioteca em VBA, mude para VBE, selecione Project and References no menu VBE, role a lista para baixo para encontrar o item "Microsoft VBScript Regular Expressions 5.5" e marque-o para incluir no aplicativo.

Insira um novo módulo e copie e cole o código a seguir neste módulo.
Sub doRegexFind() Dim strSample As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "fox d+" .Global = True .IgnoreCase = True Set matches = .Execute(strSample) For Each fnd In matches Debug.Print fnd Next fnd End With End Sub
Este procedimento pega o texto de amostra, encontra os códigos do produto pelo padrão fornecido - que está começando com "raposa", um espaço único e um número, e imprime os códigos correspondentes na janela Imediata (pressione Ctrl + G no VBE se não for já visível).

d+
A classe de caracteres no padrão define um ou mais caracteres numéricos e o padrão é basicamente o prefixo "raposa" seguido por um espaço seguido por números.
Mais informações
Visite Regular Expression Language - Quick Reference para obter mais informações sobre escapes de caracteres, classes de caracteres e âncoras.
Copie e cole o código a seguir para ver o RegEx em ação para remover os espaços dos códigos do produto.
Sub doRegexFindReplace() Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim strSample As String strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "(fox) (d+)" .Global = True .IgnoreCase = True strSample = .Replace(strSample, "$1$2") End With Debug.Print strSample End Sub
Este procedimento substitui o conteúdo do texto de amostra removendo os espaços dos códigos de produto correspondentes ao padrão fornecido e imprime o texto do resultado na janela Imediato.

Observe que o padrão é ligeiramente diferente do primeiro código. Os termos neste padrão são colocados entre parênteses e os termos correspondentes são usados no método Substituir como $ 1 e $ 2 em ordem. Este procedimento simplesmente une os dois termos sem espaços.
Voltar para a pergunta
Vamos voltar ao texto de exemplo que usamos no início deste artigo.

Precisamos encontrar "raposa" seguido de caracteres numéricos e alterar a correspondência usando a cor da seção "raposa" no texto correspondente.
Embora RegEx corresponda muito bem ao padrão fornecido, ele não pode substituir a cor do texto no documento do Word. Portanto, combinaremos os métodos RegEx e Word VBA no procedimento a seguir.
Aqui estão as etapas:
- Encontre as correspondências com RegEx.
- Pesquise cada texto correspondido usando o método Word Find.
- Encontre a cor da primeira palavra no intervalo encontrado.
- Altere a cor do intervalo encontrado com a cor da etapa anterior.
Mude para VBE e insira um novo módulo. Certifique-se de que a biblioteca VBScript Regular Expressions seja adicionada ao projeto e copie e cole o código a seguir neste novo módulo.
Sub doRegexMagic() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Set objRegex = New RegExp str = "fox" With Selection .HomeKey wdStory .WholeStory End With With objRegex .Pattern = str & " d+" .Global = True .IgnoreCase = True Set matches = .Execute(Selection.Text) End With With Selection .HomeKey wdStory With .Find .ClearFormatting .Forward = True .Format = False .MatchCase = True For Each fnd In matches .Text = fnd .Execute With Selection .Font.Fill.ForeColor = .Range.Words(1).Font.TextColor .MoveRight wdCharacter End With Next fnd End With .HomeKey wdStory End With End Sub
Execute o código e aqui está o resultado.

Baixar arquivo do Word
Para baixar o arquivo do Word: how-to-use-regex-in-microsoft-word.docm
RegEx no Excel?
Regex está completamente ausente do Excel. No entanto, ainda podemos usar Expressões regulares VBScript no Excel VBA.
Launch Excel, open a new workbook, and create the content as shown below.

Reference
This article has been inspired by Learn Excel 2010 - "Find & Replace Color of A Certain Word": Podcast #1714 published by Bill Jelen on May 21, 2013! So we wanted to use similar sample text as he used in the video. We just added numbers after the "fox".
Switch to VBE, and insert a new module. Make sure VBScript Regular Expressions library is added to the project just like you did in Word, and copy and paste the following code into this new module.
Sub doRegexMagicInExcel() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim rng As Range Dim cll As Range Set objRegex = New RegExp Set rng = Selection str = "fox" With objRegex .Pattern = "(" & str & ") (d+)" .Global = True .IgnoreCase = True For Each cll In rng.Cells Set matches = .Execute(cll.Value) For Each fnd In matches cll.Value = .Replace(cll.Value, "$1$2") Next fnd Next cll End With End Sub
Return to worksheet, and select the range with sample text. Run the macro, and see the result.

This procedure loops through the cells in the selected range, replaces the text in the cells by removing the spaces from the product codes matched with the given RegEx pattern.
Download Excel File
To download the Excel file: how-to-use-regex-in-microsoft-excel.xlsm