Bỏ qua nội dung chính

Làm thế nào để tìm và đánh dấu các đoạn văn bản trùng lặp trong tài liệu Word?

Giả sử, bạn có một tài liệu Word lớn có thể có hàng trăm trang, bây giờ, bạn muốn kiểm tra xem có đoạn văn bản trùng lặp hay không và sau đó đánh dấu để làm cho chúng nổi bật, để bạn có thể xử lý các câu trùng lặp. Làm cách nào bạn có thể tìm và đánh dấu các đoạn văn bản trùng lặp một cách nhanh chóng và dễ dàng trong tài liệu Word?

Tìm và đánh dấu các đoạn văn bản trùng lặp trong tài liệu Word bằng mã VBA


Tìm và đánh dấu các đoạn văn bản trùng lặp trong tài liệu Word bằng mã VBA

Để tìm và đánh dấu các đoạn văn bản trùng lặp trong tài liệu Word, mã VBA sau có thể giúp bạn, vui lòng làm như sau:

1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Và sau đó, nhấp vào Chèn > Mô-đun, sao chép và dán mã bên dưới vào mô-đun trống đã mở:

Mã VBA: Tìm và đánh dấu các đoạn văn bản trùng lặp trong tài liệu 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. Và sau đó nhấn F5 để chạy mã này, tất cả các câu trùng lặp được đánh dấu cùng một lúc, các đoạn văn bản trùng lặp được hiển thị đầu tiên được đánh dấu bằng màu xanh lục và các bản sao khác được đánh dấu bằng màu vàng, xem ảnh chụp màn hình:

doc đánh dấu câu trùng lặp 1

Công cụ năng suất văn phòng tốt nhất

Kutools cho Word - Nâng cao trải nghiệm sử dụng từ của bạn với Over 100 Các tính năng đáng chú ý!

🤖 Trợ lý AI của Kutools: Biến đổi bài viết của bạn bằng AI - Tạo nội dung  /  Viết lại văn bản  /  Tóm tắt tài liệu  /  Hỏi thông tin dựa trên tài liệu, tất cả đều có trong Word

📘 Làm chủ tài liệu: Chia trang  /  Hợp nhất tài liệu  /  Lựa chọn xuất khẩu ở nhiều định dạng khác nhau (PDF/TXT/DOC/HTML...)  /  Chuyển đổi hàng loạt sang PDF  /  Xuất trang dưới dạng hình ảnh  /  In nhiều tập tin cùng một lúchữu ích. Cảm ơn !

Chỉnh sửa nội dung: Tìm và thay thế hàng loạt trên nhiều tệp  /  Thay đổi kích thước tất cả hình ảnh  /  Hoán đổi hàng và cột của bảng  /  Chuyển bảng thành văn bảnhữu ích. Cảm ơn !

🧹 Dễ dàng làm sạch: Quét đi Không gian bổ sung  /  Phần ngắt  /  Tất cả các tiêu đề  /  Hộp văn bản  /  Các siêu liên kết  / Để biết thêm các công cụ xóa, hãy truy cập Xóa nhómhữu ích. Cảm ơn !

Phụ trang quảng cáo: Chèn Ngàn dấu phân cách  /  Hộp kiểm tra  /  Nút radio  /  Mã QR  /  Mã vạch  /  Bảng đường chéo  /  Chú thích phương trình  /  Hình ảnh Caption  /  Bảng chú thích  /  Nhiều Hình Ảnh  / Khám phá thêm trong Chèn nhómhữu ích. Cảm ơn !

???? Lựa chọn chính xác: Xác định trang cụ thể  /  bảng  /  hình dạng  /  đoạn văn tiêu đề  / Tăng cường điều hướng với chi tiết Chọn tính nănghữu ích. Cảm ơn !

Cải tiến sao: Điều hướng nhanh chóng đến bất kỳ vị trí nào  /  tự động chèn văn bản lặp đi lặp lại  /  chuyển đổi liền mạch giữa các cửa sổ tài liệu  /  11 công cụ chuyển đổihữu ích. Cảm ơn !

👉 Bạn muốn thử những tính năng này? Kutools cho Word cung cấp một 60 ngày dùng thử miễn phí, không có giới hạn! 🚀
 
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