Làm cách nào để thay thế tất cả các ngắt trong vùng chọn trong Word bằng VBA?


5

Tôi đã chọn một phần của tài liệu và bây giờ tôi muốn thay thế tất cả các ngắt trang và phần thủ công (phần sau của tất cả các loại, chẳng hạn như trang tiếp theo, trang tiếp theo không đều, trang tiếp theo, liên tục, cột) trong lựa chọn đó .

Tôi đã cố gắng ghi lại một macro trong khi sử dụng các từ nâng cao tìm / thay thế tìm kiếm [^ m ^ b], nhưng nó không hoạt động (không tìm thấy gì trong tài liệu mà tôi đã spam với các dấu ngắt để kiểm tra).

Vì vậy, tôi đã cố gắng xử lý các phần ngắt và trang riêng biệt, trước tiên chọn, sau đó thay thế một loại, chọn lại, thay thế loại khác. Bằng cách này, tìm kiếm thứ hai (cho phần ngắt) vì một số lý do cũng đã chạm vào một phần của tài liệu trước khi lựa chọn.

Tuy nhiên, làm thế nào để tôi tìm kiếm các phần phá vỡ đặc biệt? Giao diện người dùng tìm kiếm nâng cao không có tùy chọn để tìm kiếm cụ thể cho họ, nhưng tìm kiếm ngắt phần thông thường không tìm thấy mọi thứ. Ngoài ra, tôi cho rằng có một cách để làm tất cả trong một lần.

Một bản cập nhật, tôi đang thử phần riêng biệt. Macro dưới đây không thay thế tất cả các phần ngắt, nhưng làm điều gì đó kỳ lạ và sai. Tôi đã có bốn phần ngắt, tất cả các loại liên tục trước khi lựa chọn, sau đó một phần ngắt loại trang tiếp theo và một phần ngắt loại trang chẵn trong lựa chọn. Sau khi chạy một macro để thay thế phần, ngắt phần cuối cùng trước khi lựa chọn thay đổi từ loại liên tục sang loại trang chẵn.

Macro của tôi:

Sub break2()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "^b"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = False
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchKashida = False
    .MatchDiacritics = False
    .MatchAlefHamza = False
    .MatchControl = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Bạn có thể tìm và thay thế bằng mã ASCII cho nguồn cấp dữ liệu không, v.v.?
Raystafarian

Câu trả lời:


3

Mã đơn giản này loại bỏ tất cả các phá vỡ. Chỉ còn lại một thứ không phổ biến - "Text Wrap Break". Nếu bạn muốn xóa nó đi, chỉ cần thêm "^l" bên trong Array() thông số. Nhưng hãy nhớ rằng "^l" cũng sẽ phù hợp với "Line Break". Dù sao, bạn đã không đề cập đến Text Wrap Breaks và nó không phổ biến, vì vậy tôi nghĩ đó không phải là vấn đề. Hy vọng rằng sẽ giúp được ai đó;)

Sub Delete_all_breaks_from_selection()
Dim arr() As Variant
Dim i As Byte

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
'"^b" - Selection Breaks, "^m" - Page Break, "^n" - Column Break
arr = Array("^b", "^m", "^n")
    For i = LBound(arr) To UBound(arr)
        With Selection.Find
            .Text = arr(i)
            .Replacement.Text = ""
        End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Next
End Sub
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.