Foto de Natalia M.
Natalia há 1 ano
Enviada pelo
Site

Localizar e destacar trechos semelhantes ou iguais no word

Pessoal, encontrie uma macro que localizar e destaca parágrafo igual no Word. Gostaria de saber se é possível localizar e destacar trechos semelhantes/ou iguais no Word, sem ser o parágrafo inteiro.

 

Atualmente, a macro que tenho que destaca o PARÁGRAFO é essa:

 

Sub highlightdup()
    Dim I, J As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    With ActiveDocument
        For I = 1 To .Paragraphs.Count - 1
            Set xRngFind = .Paragraphs(I).Range
            If xRngFind.HighlightColorIndex <> wdYellow Then
                For J = I + 1 To .Paragraphs.Count
                    Set xRng = .Paragraphs(J).Range
                    If xRngFind.Text = xRng.Text Then
                        xRngFind.HighlightColorIndex = wdBrightGreen
                        xRng.HighlightColorIndex = wdYellow
                    End If
                Next
            End If
        Next
    End With
End Sub

 

Poderiam me ajudar? Ainda que seja encontrar "trechos" iguais (duas a cinco palavras sequênciais) já ajuda muito.

Abraço!

Matemática
2 respostas
Professor Rodrigo B.
Respondeu há 1 ano
Contatar Rodrigo

Olá, talvez eu consiga te ajudar. Para localizar e destacar trechos semelhantes ou iguais no Word, você pode fazer algumas modificações na sua macro atual. Aqui está uma versão modificada para atender ao seu requisito de encontrar trechos iguais (duas a cinco palavras sequenciais):

 

Sub highlightdups()
    Dim i, j, k As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Dim wordCount As Integer
    
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    
    With ActiveDocument
        For i = 1 To .Paragraphs.Count - 1
            Set xRngFind = .Paragraphs(i).Range
            If xRngFind.HighlightColorIndex <> wdYellow Then
                wordCount = 0
                Do While wordCount < 5 ' Altere para o número desejado de palavras sequenciais
                    xStrFind = xRngFind.Words(wordCount + 1)
                    For j = i + 1 To .Paragraphs.Count
                        Set xRng = .Paragraphs(j).Range
                        xStr = xRng.Words(1)
                        If xStrFind = xStr Then
                            For k = 1 To wordCount
                                If xRngFind.Words(k).Text <> xRng.Words(k).Text Then
                                    Exit For
                                End If
                            Next k
                            If k = wordCount + 1 Then
                                xRngFind.HighlightColorIndex = wdBrightGreen
                                xRng.HighlightColorIndex = wdYellow
                            End If
                        End If
                    Next j
                    wordCount = wordCount + 1
                Loop
            End If
        Next i
    End With
    
    Application.ScreenUpdating = True
End Sub

 

Essa versão da macro adiciona um loop interno para percorrer até 5 palavras sequenciais (ou o número desejado) ao comparar trechos de texto. Certifique-se de ajustar o valor de wordCount conforme necessário. Isso deve ajudar a encontrar e destacar trechos semelhantes no Word.

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta

Envie sua pergunta

Professora Cayla R.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 1 ano
Contatar Cayla

Olá, Natalia, espero conseguir te ajudar nessa...

Tente adaptar está modificação do código para trabalhar com trechos menores, como palavras ou partes de parágrafos.

Sub HighlightDupWords()
    Dim i, j As Long
    Dim xRngFind, xRng As Range
    Dim xStrFind, xStr As String
    Options.DefaultHighlightColorIndex = wdYellow
    Application.ScreenUpdating = False
    With ActiveDocument
        For i = 1 To .Words.Count - 1
            Set xRngFind = .Words(i)
            If xRngFind.HighlightColorIndex <> wdYellow Then
                For j = i + 1 To .Words.Count
                    Set xRng = .Words(j)
                    If xRngFind.Text = xRng.Text Then
                        xRngFind.HighlightColorIndex = wdBrightGreen
                        xRng.HighlightColorIndex = wdYellow
                    End If
                Next j
            End If
        Next i
    End With
End Sub

 

Espero que esse código sirva para você. Abraços...

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta

Aprenda do seu jeito, no seu ritmo

Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App
Escaneie o QR Code para baixar