跳到主要內容

如何在Word文檔中查找並突出顯示重複的段落?

假設您有一個大的Word文檔,該文檔可能有數百頁,現在,您要檢查是否存在重複的段落,然後突出顯示使其突出顯示,以便您處理重複的句子。 您如何在Word文檔中快速輕鬆地查找並突出顯示重複的段落?

使用VBA代碼查找並突出顯示Word文檔中的重複段落


使用VBA代碼查找並突出顯示Word文檔中的重複段落

要查找並突出顯示Word文檔中的重複段落,請按照以下VBA代碼進行操作:

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 然後,單擊 插入 > 模塊,將以下代碼複製並粘貼到打開的空白模塊中:

VBA代碼:查找並突出顯示Word文檔中的重複段落:

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

3。 然後按 F5 運行此代碼的關鍵,所有重複的句子都立即突出顯示,顯示的第一個重複段落以綠色突出顯示,其他重複的句子以黃色突出顯示,請參見屏幕截圖:

doc高亮dup句子1

最佳辦公生產力工具

Kutools for Word - 透過 Over 提升您的文字體驗 100 顯著特點!

🤖 Kutools 人工智慧助手:用人工智慧改變你的寫作 - 生成內容  /  重寫文字  /  總結文件  /  查詢資料 基於文檔,全部在Word中

📘 文件掌握: 分頁  /  合併文件  /  以各種格式匯出選擇(PDF/TXT/DOC/HTML...)  /  批次轉換為PDF  /  將頁面匯出為圖像  /  一次列印多個文件...

內容編輯: 批量查找和替換 跨多個文件  /  調整所有圖片的大小  /  轉置表行和列  /  將表格轉換為文字...

🧹 輕鬆清潔: 移開 多餘的空間  /  分節符  /  所有標題  /  文本框  /  超鏈接  / 如需更多拆卸工具,請前往我們的 刪除組...

創意插入: 插入 千位分隔符  /  複選框  /  單選按鈕  /  QR Code  /  條碼  /  對角線表  /  公式標題  /  圖片說明  /  表格標題  /  多張圖片  / 發現更多 插入組...

🔍 精準選擇:精確定位 特定頁面  /    /  形狀  /  標題段落  / 增強導航功能 更多 選擇功能...

星級增強: 快速導航至任何位置  /  自動插入重複文字  /  在文檔視窗之間無縫切換  /  11 轉換工具...

???? 想嘗試這些功能嗎? Kutools for Word 提供了 60天免費試用,沒有任何限制! 🚀
 
Comments (15)
Rated 4.5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Can you help me it is not working can you helphttps://1drv.ms/w/s!Aja8bo-tfhqb-FVWcGUyvYPv07cX?e=lgJ4i1
This comment was minimized by the moderator on the site
Hi, mình chạy đoạn code trên nhưng không thấy ra kết quả giống bài viết, mình dùng word 2019, Ad support giúp mình nhé 
This comment was minimized by the moderator on the site
Hi, can anyone please suggest me to prepare a macro in ms word for finding error in paragraph.
Like:- "and or" "that that" "of the of the" "Sentence end without dot (.)" "New Sentence start with initial caps without ending the sending".
This comment was minimized by the moderator on the site
Thanks so much.A very valuable article, helped me with my duplicate copies and paste paragraphs!You are awesome.
This comment was minimized by the moderator on the site
Tried this for my book in MS Word. First, it would not work because I had bullet points. I removed them and then it only found 2 instances "blank page" and "table of contents". I purposely have several sentences repeated, and this macro did not find them. Thank you for trying, but I would say this doesn't work.
This comment was minimized by the moderator on the site
I had a very long document to process, the code above would take at least 100 days to finish and blocked everything while working at it. The main culprit is the "Set xRng = .Paragraphs(J).Range" which is very slow. I did an alternative version which ran in just 4 hours and presents a continuous report on the processing status and time to end. (To see the report in real time you have to open the "immediate window" by pressing Ctrl+G in the Microsoft Visual Basic for Applications window.) The code works well, except that it predicts a longer time to end than is actually the case (depends on the document). The code is as follows:

Sub highlightdup()
Dim StartTime, SecondsElapsed As Date
Dim secondsPerComparison As Double
Dim I, J, PC, totalComparisons, comparisonsDone, C, secondsToFinish As Long
Dim xRngFind, xRng As Range
Dim xStrg, minutesToFinish As String
Dim currentParag, nextParag As Paragraph
'Options.DefaultHighlightColorIndex = wdYellow
Application.ScreenUpdating = False
With ActiveDocument
StartTime = Now()
C = 0
PC = .Paragraphs.Count
totalComparisons = CLng((PC * (PC + 1)) / 2)
Set currentParag = .Paragraphs(1)
For I = 1 To PC - 1
'Debug.Print "processing paragraph " & I & " of a total of " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
If currentParag.Range.HighlightColorIndex <> wdYellow Then
If currentParag.Range.HighlightColorIndex <> wdBrightGreen Then
Set nextParag = currentParag
For J = I + 1 To PC
Set nextParag = nextParag.Next
If currentParag.Range.Text = nextParag.Range.Text Then
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "found one!! " & " I = " & I & " J = " & J & nextParag.Range.Text
End If
Next
End If
End If
DoEvents
comparisonsDone = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed) / comparisonsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
elapsedTime = Format(SecondsElapsed / 86400, "hh:mm:ss")
Debug.Print "Finished procesing paragraph " & I & " of " & PC & ". Elapsed time = " & elapsedTime & ". Time to finish = " & minutesToFinish
Set currentParag = currentParag.Next
Next
End With
End Sub
This comment was minimized by the moderator on the site
Hi there! Thank you so much for this code. When I first tried to use it there was a syntax error that kept popping up. But, upon looking at the above code and this code I found a way to make it work and I figured it might help someone else: (Just follow the instructions above but copy and paste this instead) if you're finding yours is having a Syntax error like mine.

PC = .Paragraphs.Count
totalComparisons = CLng((PC * (PC + 1)) / 2)
Set currentParag = .Paragraphs(1)
For I = 1 To PC - 1
'Debug.Print "processing paragraph " & I & " of a total of " & PC & " " & currentParag.Range.Text
'Debug.Print Len(currentParag) & currentParag
If currentParag.Range.HighlightColorIndex <> wdYellow Then
If currentParag.Range.HighlightColorIndex <> wdBrightGreen Then
Set nextParag = currentParag
For J = I + 1 To PC
Set nextParag = nextParag.Next
If currentParag.Range.Text = nextParag.Range.Text Then
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "found one!! " & amp; " I = " & amp; I & amp; " J = " & amp; J & amp; nextParag.Range.Text
End If
Next
End If
End If
DoEvents
comparisonsDone = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff("s", StartTime, Now())
secondsPerComparison = CLng(SecondsElapsed) / comparisonsDone
secondsToFinish = CLng(secondsPerComparison * (totalComparisons - comparisonsDone))
minutesToFinish = Format(secondsToFinish / 86400, "hh:mm:ss")
elapsedTime = Format(SecondsElapsed / 86400, "hh:mm:ss")
Debug.Print "Finished procesing paragraph " & amp; I & amp; " of " & amp; PC & amp; ". Elapsed time = " & amp; elapsedTime & amp; ". Time to finish = " & amp; minutesToFinish
Set currentParag = currentParag.Next
Next
End With
End Sub
Rated 4.5 out of 5
This comment was minimized by the moderator on the site
Thank you, you saved my day already twice. This work like magic.
This comment was minimized by the moderator on the site
thank you very much, it works perfectly and very quickly !

Paul (from France)
This comment was minimized by the moderator on the site
Sir, kindly thank you and please have good winds in your life.
This comment was minimized by the moderator on the site
Hello



Thank you for the helping



But how can I find the same sentences in my text?



Regards
This comment was minimized by the moderator on the site
Hello

Thank you for the helping

But how can I find the same sentences in my text?

Regards
This comment was minimized by the moderator on the site
It throws Compile error: Syntax error, the code is 100% as the example.
This comment was minimized by the moderator on the site
I tried, and it works fine!
I just wanted to know - could I do the same thing - but not a whole paragraph, but a sentence with a few words I'd set up - like 10 words?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations