Note: The other languages of the website are Google-translated. Back to English

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 Word được đề xuất

 

Kutools cho Word - Hơn 100 tính năng nâng cao cho Word, tiết kiệm 50% thời gian của bạn

  • Các hoạt động phức tạp và lặp đi lặp lại có thể được thực hiện xử lý một lần trong vài giây.
  • Chèn nhiều hình ảnh trên các thư mục vào tài liệu Word cùng một lúc.
  • Hợp nhất và kết hợp nhiều tệp Word trên các thư mục thành một với thứ tự mong muốn của bạn.
  • Chia tài liệu hiện tại thành các tài liệu riêng biệt theo tiêu đề, ngắt phần hoặc các tiêu chí khác.
  • Chuyển đổi tệp giữa Doc và Docx, Docx và PDF, bộ sưu tập các công cụ để chuyển đổi và lựa chọn phổ biến, v.v.
Nhận xét (15)
Xếp hạng 4.5 trong 5 · xếp hạng 1
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Lều và không có chức năng, vì vậy nó thay thế chức năng.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi đã thử, và nó hoạt động tốt!
Tôi chỉ muốn biết - tôi có thể làm điều tương tự - nhưng không phải toàn bộ một đoạn văn, mà là một câu với một vài từ tôi đã thiết lập - như 10 từ?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Nó ném lỗi biên dịch: Lỗi cú pháp, mã là 100% như ví dụ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào

Cảm ơn bạn đã giúp đỡ

Nhưng làm thế nào tôi có thể tìm thấy những câu giống nhau trong văn bản của tôi?

Trân trọng
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào



Cảm ơn bạn đã giúp đỡ



Nhưng làm thế nào tôi có thể tìm thấy những câu giống nhau trong văn bản của tôi?



Trân trọng
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi có một tài liệu rất dài cần xử lý, đoạn mã trên sẽ mất ít nhất 100 ngày để hoàn thành và đã chặn mọi thứ khi đang làm việc với nó. Thủ phạm chính là "Đặt xRng = .Paragraphs (J) .Range" rất chậm. Tôi đã tạo một phiên bản thay thế chỉ trong 4 giờ và trình bày một báo cáo liên tục về trạng thái xử lý và thời gian kết thúc. (Để xem báo cáo trong thời gian thực, bạn phải mở "cửa sổ ngay lập tức" bằng cách nhấn Ctrl + G trong cửa sổ Microsoft Visual Basic for Applications.) Mã hoạt động tốt, ngoại trừ việc nó dự đoán thời gian kết thúc lâu hơn so với thực tế. trường hợp (phụ thuộc vào tài liệu). Mã như sau:

Sub highlightdup ()
Giảm thời gian bắt đầu, số giây bị lặp lại theo ngày
Làm mờ giâyPerComparison As Double
Giảm độ sáng I, J, PC, tổng số So sánh, so sánh Một, C, giây
Dim xRngFind, xRng As Range
Làm mờ xStrg, phútToFinish dưới dạng chuỗi
Làm mờ hiện tạiParag, tiếp theoParag As Paragraph
'Options.DefaultHighlightColorIndex = wdYellow
Application.ScreenUpdating = Sai
Với ActiveDocument
StartTime = Now ()
C = 0
PC = .Paragraphs.Count
totalComparisons = CLng ((PC * (PC + 1)) / 2)
Đặt currentParag = .Paragraphs (1)
Đối với I = 1 Đến PC - 1
'Debug.Print "xử lý đoạn văn" & I & "trong tổng số" & PC & "" & currentParag.Range.Text
'Debug.Print Len (currentParag) & currentParag
If currentParag.Range.HighlightColorIndex <> wdYellow Then
Nếu currentParag.Range.HighlightColorIndex <> wdBrightGreen thì
Đặt nextParag = currentParag
Đối với J = I + 1 Tới PC
Đặt nextParag = nextParag.Next
Nếu currentParag.Range.Text = nextParag.Range.Text Thì
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "đã tìm thấy một !!" & "I =" & I & "J =" & J & nextParag.Range.Text
Cuối Nếu
Sau
Cuối Nếu
Cuối Nếu
làm sự kiện
so sánhDone = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff ("s", StartTime, Now ())
secondsPerComparison = CLng (SecondsElapsed) / CompareDone
secondsToFinish = CLng (secondsPerComparison * (totalComparisons - so sánhDone))
phútToFinish = Định dạng (secondsToFinish / 86400, "hh: mm: ss")
elapsedTime = Định dạng (SecondsElapsed / 86400, "hh: mm: ss")
Debug.Print "Đã hoàn thành xử lý đoạn văn" & I & "của" & PC & ". Elapsed time =" & elapsedTime & ". Time to finish =" & minutesToFinish
Đặt currentParag = currentParag.Next
Sau
Kết thúc với
End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thưa bạn, xin chân thành cảm ơn và chúc bạn có những cơn gió tốt lành trong cuộc sống.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
cảm ơn bạn rất nhiều, nó hoạt động hoàn hảo và rất nhanh chóng!

Paul (từ Pháp)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn, bạn đã tiết kiệm một ngày của tôi hai lần. Công việc này giống như một phép thuật.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào bạn! Cảm ơn bạn rất nhiều cho mã này. Khi tôi lần đầu tiên cố gắng sử dụng nó, có một lỗi cú pháp liên tục xuất hiện. Tuy nhiên, khi xem mã ở trên và mã này, tôi đã tìm ra cách để làm cho nó hoạt động và tôi nhận thấy nó có thể giúp ích cho người khác: (Chỉ cần làm theo hướng dẫn ở trên nhưng thay vào đó sao chép và dán mã này) nếu bạn nhận thấy Lỗi cú pháp như của tôi.

PC = .Paragraphs.Count
totalComparisons = CLng ((PC * (PC + 1)) / 2)
Đặt currentParag = .Paragraphs (1)
Đối với I = 1 Đến PC - 1
'Debug.Print "xử lý đoạn văn" & I & "trong tổng số" & PC & "" & currentParag.Range.Text
'Debug.Print Len (currentParag) & currentParag
If currentParag.Range.HighlightColorIndex <> wdYellow Then
Nếu currentParag.Range.HighlightColorIndex <> wdBrightGreen thì
Đặt nextParag = currentParag
Đối với J = I + 1 Tới PC
Đặt nextParag = nextParag.Next
Nếu currentParag.Range.Text = nextParag.Range.Text Thì
currentParag.Range.HighlightColorIndex = wdBrightGreen
nextParag.Range.HighlightColorIndex = wdYellow
Debug.Print "đã tìm thấy một !!" & amp; "Tôi =" & amp; Tôi & amp; "J =" & amp; J & amp; nextParag.Range.Text
Cuối Nếu
Sau
Cuối Nếu
Cuối Nếu
làm sự kiện
so sánhDone = PC * (I - 1) + (J - I)
SecondsElapsed = DateDiff ("s", StartTime, Now ())
secondsPerComparison = CLng (SecondsElapsed) / CompareDone
secondsToFinish = CLng (secondsPerComparison * (totalComparisons - so sánhDone))
phútToFinish = Định dạng (secondsToFinish / 86400, "hh: mm: ss")
elapsedTime = Định dạng (SecondsElapsed / 86400, "hh: mm: ss")
Debug.Print "Đã hoàn thành xử lý đoạn văn" & amp; Tôi & amp; "trong tổng số" & amp; PC & amp; ". Thời gian đã trôi qua =" & amp; ElapsedTime & amp; ". Thời gian kết thúc =" & amp; phútToFinish
Đặt currentParag = currentParag.Next
Sau
Kết thúc với
End Sub
Xếp hạng 4.5 trong 5
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đã thử điều này cho cuốn sách của tôi trong MS Word. Đầu tiên, nó sẽ không hoạt động vì tôi có gạch đầu dòng. Tôi đã gỡ bỏ chúng và sau đó nó chỉ tìm thấy 2 trường hợp "trang trống" và "mục lục". Tôi cố tình lặp lại một số câu, và macro này không tìm thấy chúng. Cảm ơn bạn đã cố gắng, nhưng tôi sẽ nói rằng điều này không hiệu quả.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn rất nhiều.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, bất cứ ai có thể vui lòng đề nghị tôi chuẩn bị một macro trong ms word để tìm lỗi trong đoạn văn.
Như: - "and or" "that that" "of the" "Câu kết thúc không có dấu chấm (.)" "Câu mới bắt đầu bằng chữ hoa đầu tiên mà không kết thúc việc gửi".
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào, mình chạy đoạn mã trên nhưng không thấy kết quả giống bài viết, mình dùng word 2019, Ad hỗ trợ giúp mình nhé 
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bạn có thể giúp tôi nó không hoạt động được bạn có thể giúphttps://1drv.ms/w/s!Aja8bo-tfhqb-FVWcGUyvYPv07cX?e=lgJ4i1
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL