Lưu thông tin tìm kiếm và thay thế trong Macro (Microsoft Word)
Simao có một số macro đang tìm kiếm và thay thế rất nhiều. Tuy nhiên, khi macro kết thúc, anh ấy muốn khôi phục tìm kiếm và thay thế các tham số cho những tham số có hiệu lực ngay trước khi anh ấy chạy macro. Vì vậy, Simao tự hỏi nơi tìm tất cả các thuộc tính để tìm kiếm và thay thế để anh có thể lưu chúng ở đầu mỗi macro và sau đó khôi phục chúng ở cuối.
Như Simao ám chỉ, “thực tiễn tốt” là để macro của bạn trả lại bất kỳ thứ gì mà nó thay đổi về trạng thái bất kỳ trước khi macro chạy.
Bằng cách đó, macro của bạn sẽ không làm xáo trộn bất kỳ điều gì khác mà người dùng có thể đang làm.
Ý tưởng trong việc thực hiện thực hành này là làm theo các bước sau:
-
Tìm ra những gì macro của bạn sẽ thay đổi. Tạo các biến để lưu trữ tất cả các thuộc tính sẽ được thay đổi. Lưu trữ các thuộc tính trong các biến bạn đã tạo. Làm công việc của bạn . Khôi phục các thuộc tính đó từ các biến bạn đã đặt trước đó ở bước 3
Chìa khóa ở đây là bước 1. Nếu bạn không thể tìm ra những gì macro của bạn sẽ thay đổi, bạn không thể tiếp tục với các bước khác. Với việc thực hiện các hoạt động tìm và thay thế, có một số đối tượng có thể được tham gia và mỗi đối tượng có một số thuộc tính tốt.
Một cách dễ dàng để tìm ra mọi thứ là chỉ cần ghi lại một macro thực hiện thao tác Tìm và Thay thế, sau đó xem mã mà trình ghi tạo ra. Ví dụ: tôi đã ghi lại tìm kiếm từ “the”
và thay thế nó bằng từ “THE.” Khi tôi dừng trình ghi macro và xem những gì nó tạo ra, đây là phần liên quan của những gì tôi đã thấy:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "the" .Replacement.Text = "THE" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
Tôi sẽ quay lại hai dòng đầu tiên của mã này trong giây lát nhưng hãy xem tất cả các dòng khác được tạo ra. Với đối tượng .Find, toàn bộ mật khẩu thuộc tính được chỉ định. Đây là các thuộc tính tương ứng với cài đặt trong hộp thoại Tìm và Thay thế. Vì vậy, bây giờ bạn có một danh sách các biến mà bạn cần xác định, ở mức tối thiểu, vì vậy bạn có thể lưu cài đặt của từng thuộc tính này và sau đó khôi phục chúng.
Bây giờ quay lại hai dòng đầu tiên của mã; chúng đại diện cho loài ruồi chính trong thuốc mỡ. Phương thức .ClearFormatting loại bỏ mọi định dạng được xác định cho hoạt động Tìm và Thay thế. Để xem những thuộc tính nào bị ảnh hưởng nếu tôi xác định định dạng trong Tìm và Thay thế, tôi đã ghi lại một macro của cùng một thao tác Tìm và Thay thế, nhưng lần này chỉ định rằng văn bản thay thế phải được in đậm và gạch chân. Mọi thứ mà đầu ghi ghi đều giống nhau, ngoại trừ bốn dòng mã được thêm vào ngay sau dòng thứ hai ở trên:
With Selection.Find.Replacement.Font .Bold = True .Underline = wdUnderlineSingle End With
Đây là những dòng chỉ định định dạng tôi muốn sử dụng để thay thế. Trong đoạn mã trước đó, trình ghi macro hiển thị tất cả các thuộc tính của đối tượng .Find. Trong trường hợp này, điều duy nhất được ghi lại là những gì tôi đang thay đổi, điều này chỉ xảy ra trong đối tượng .Font. Rất tiếc, có những đối tượng khác có thể được chỉ định ngoài đối tượng .Font -. Paragraph, .Tabs, .Language, v.v. Ngoài ra, chúng không chỉ có thể được đặt cho đối tượng .Find mà còn cho đối tượng .Replacement. Đó là tiềm năng của hàng trăm tài sản cần được lưu trữ và phục hồi.
Âm thanh không thể? Có lẽ không phải là không thể, nhưng nó chắc chắn là khó khăn. Sử dụng phương pháp ghi macro, bạn sẽ cần thực hiện tìm (hoặc thay thế; các khái niệm đều giống nhau) và thay đổi định dạng của mọi thuộc tính định dạng có thể tìm thấy hoặc thay thế.
Nếu bạn thành công trong việc đó, bạn sẽ có một danh sách đầy đủ.
Ví dụ ở đây là mã được tạo cho đối tượng Selection.Find.Font:
With Selection.Find.Font .Size = 14 .Bold = True .Underline = wdUnderlineSingle .StrikeThrough = True .DoubleStrikeThrough = False .Hidden = True .SmallCaps = True .AllCaps = False .Color = wdColorRed .Superscript = True .Subscript = False End With
Nói cách khác, 11 thuộc tính khác nhau để lưu và đặt lại. Nhưng đợi đã!
Còn nữa! (Nghe giống như một đoạn quảng cáo về dao Ginsu, đúng không?) Tôi không thực hiện bất kỳ thay đổi nào trên tab Nâng cao của hộp thoại Tìm Phông chữ, điều này chắc chắn sẽ mở rộng danh sách này. Bạn có thể biết được tổng số thuộc tính của đối tượng .Font bằng cách xem tài liệu của Microsoft cho các thuộc tính của đối tượng đó. (Đảm bảo bạn mở rộng liên kết Thuộc tính cho đối tượng .Font bằng cách sử dụng danh sách thả xuống ở bên trái của trang.)
https://docs.microsoft.com/en-us/office/vba/api/word.font
Bạn sẽ thấy hơn 50 thuộc tính ở đó. Và, hãy nhớ rằng có một đối tượng .Font riêng biệt thuộc về đối tượng .Replacement và có các đối tượng được ghép nối tương tự cho các phần tử định dạng khác (.Paragraph, .Tabs, v.v.).
Chắc chắn là khó khăn.
Khi bạn hiểu có bao nhiêu thuộc tính bị ảnh hưởng khi bạn thực hiện thao tác Tìm và Thay thế, bạn bắt đầu hiểu tại sao nhiều người bỏ qua việc lưu và khôi phục cài đặt định dạng cho các thao tác này. Nó có thể làm được; Tuy nhiên, nó không phải là một công việc nhỏ.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.
(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (13762) áp dụng cho Microsoft Word 2007, 2010, 2013, 2016, 2019 và Word trong Office 365.