Localizar e selecionar intervalo entre 2 textos

Anônima
2024-07-01T05:06:17+00:00

Olá.

Estou com uma dificuldade para automatizar a formatação de um documento.

Preciso localizar e selecionar um intervalo entre dois textos, se possível com vba.

Exemplo.

Preciso localizar o texto, "aluno 1" e "aluno 2" e tudo o que estiver no intervalo entre as duas palavras deverá ser selecionado e formatado com a cor vermelha.

Desde já agradeço pela ajuda.

Microsoft 365 e Office | Word | Outro | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

11 respostas

Classificar por: Mais útil
  1. Anônima
    2024-07-09T05:17:21+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Oi, Henrique Flausino

    Modifiquei o código da seguinte forma:

    Sub FormatTextBetween()
    
        Dim startText As String
    
        Dim endText As String
    
        Dim startPos As Long
    
        Dim endPos As Long
    
        Dim doc As Document
    
        Dim rng As Range
    
        Dim searchPos As Long
    
        startText = "aluno 1"
    
        endText = "aluno 2"
    
        Set doc = ActiveDocument
    
        searchPos = 1   
    
        Do
    
            startPos = InStr(searchPos, doc.Content.Text, startText)
    
            If startPos = 0 Then Exit Do       
    
            endPos = InStr(startPos + Len(startText), doc.Content.Text, endText)
    
            If endPos = 0 Then Exit Do
    
            Set rng = doc.Range(startPos + Len(startText), endPos - 1)
    
            rng.Font.Color = wdColorRed
    
            searchPos = endPos + Len(endText)
    
        Loop
    
    End Sub
    

    Se você acha que sou útil neste tópico, pode marcar esta resposta como "sim" ou "não", o que também pode ajudar outros usuários a localizar soluções rapidamente. Obrigado pela vossa cooperação.

    Felicidades

    Aiden.C - MSFT |Especialista em Suporte da Comunidade Microsoft

    Esta resposta foi útil?

    1 pessoa achou esta resposta útil.
    0 comentários Sem comentários
  2. Anônima
    2024-07-09T04:01:55+00:00

    Muito obrigado pela ajuda, porém estou com dificuldade em implementar uma forma deste código formatar um documento com varia repetições iguais, pois ele para na primeira.

    Teria alguma forma de colocar um loop para ele ler o documento inteiro e formatar todas as repetições?

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. WordExperto 64,320 Pontos de reputação Moderador Voluntário
    2024-07-01T09:11:37+00:00

    En general, el primer código es más flexible, ya que busca las palabras clave de manera más robusta utilizando el objeto Range.Find.

    Esto significa que puede manejar mejores variaciones en el formato del texto (como mayúsculas/minúsculas o espacios adicionales).

    El segundo código es más directo y específico, pero podría ser menos tolerante a pequeñas diferencias en el formato del texto.

    Si tienes un documento con un formato de texto consistente, ambos códigos deberían funcionar bien.

    Si prefieres una solución más robusta, te recomendaría el primer código.

    WordExpert.

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2024-07-01T08:53:55+00:00

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.

    Oi, Henrique Flausino

    Obrigado por usar produtos da Microsoft e publicá-los na comunidade.

    Vou me certificar novamente: encontre o Aluno 1 e o Aluno 2 e formate o texto entre o Aluno 1 e o Aluno 2 em vermelho.

    Aqui está o código:

    Sub FormatTextBetween()
    
        Dim startText As String
    
        Dim endText As String
    
        Dim startPos As Long
    
        Dim endPos As Long
    
        Dim doc As Document
    
        Dim rng As Range
    
        startText = "aluno 1"
    
        endText = "aluno 2"
    
        Set doc = ActiveDocument   
    
        startPos = InStr(doc.Content.Text, startText)
    
        If startPos = 0 Then
    
            MsgBox "Texto inicial nao encontrado: " & startText
    
            Exit Sub
    
        End If
    
        endPos = InStr(startPos + Len(startText), doc.Content.Text, endText)
    
        If endPos = 0 Then
    
            MsgBox "Texto final nao encontrado:" & endText
    
            Exit Sub
    
        End If
    
        Set rng = doc.Range(startPos + Len(startText), endPos - 1)
    
        rng.Font.Color = wdColorRed
    
    End Sub
    

    Alt+F11, abra e copie e cole

    Alt+F8, executar

    Espero que as informações acima possam ajudá-lo. Sinta-se à vontade para nos enviar uma mensagem se precisar de mais ajuda.

    Felicidades

    Aiden.C - MSFT |Especialista em Suporte da Comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários
  5. WordExperto 64,320 Pontos de reputação Moderador Voluntário
    2024-07-01T08:52:33+00:00

    Hola, Henrique:

    Sub SeleccionarRangoEntrePalabras() 
    
        Dim firstTerm As String 
    
        Dim secondTerm As String 
    
        Dim myRange As Range 
    
        Dim selRange As Range 
    
        ' Define los términos de búsqueda 
    
        firstTerm = "estudiante 1" 
    
        secondTerm = "estudiante 2" 
    
        ' Establece el rango de búsqueda en todo el documento 
    
        Set myRange = ActiveDocument.Content 
    
        ' Busca la primera palabra 
    
        With myRange.Find 
    
            .Text = firstTerm 
    
            .MatchWholeWord = True 
    
            .Execute 
    
            myRange.Collapse Direction:=wdCollapseEnd 
    
            Set selRange = ActiveDocument.Range 
    
            selRange.Start = myRange.End 
    
        End With 
    
        ' Busca la segunda palabra 
    
        With myRange.Find 
    
            .Text = secondTerm 
    
            .MatchWholeWord = True 
    
            .Execute 
    
            selRange.End = myRange.Start 
    
        End With 
    
        ' Selecciona el rango entre las dos palabras 
    
        selRange.Select 
    
        ' Aplica formato al texto seleccionado (por ejemplo, color rojo) 
    
        Selection.Font.Color = wdColorRed 
    
    End Sub 
    

    WordExperto.

    Esta resposta foi útil?

    0 comentários Sem comentários