Tìm văn bản được trích dẫn trong VBA (Microsoft Word)
Jennifer cần một cách, trong macro, để tìm một chuỗi được bao quanh bởi dấu ngoặc kép thông minh hoặc thẳng (hoặc kết hợp cả hai). Cô ấy dường như không thể tìm thấy kết hợp các lệnh thích hợp cho phương pháp Tìm để định vị tất cả các bản sao của văn bản như vậy trong tất cả các phiên bản Word.
Điều quan trọng là phải rõ ràng về những gì đang được tìm kiếm. Giả định trong mẹo này là macro của bạn yêu cầu bạn tìm kiếm chuỗi specific được bao quanh bởi dấu ngoặc kép, không phải chuỗi any được bao quanh bởi dấu ngoặc kép. Ví dụ: trong tài liệu có chứa hai chuỗi được trích dẫn, chẳng hạn như “văn bản được trích dẫn của tôi” và “văn bản được trích dẫn khác”, bạn chỉ muốn tìm một trong các chuỗi mà bạn biết văn bản đó, không phải cả hai chuỗi .
Trong trường hợp này, bạn chỉ cần sử dụng phương pháp Tìm là tốt. Câu hỏi đặt ra là làm thế nào để phù hợp với khả năng của cả trích dẫn thông minh và trích dẫn thẳng trong những gì bạn tìm kiếm. May mắn thay, theo mặc định, phương pháp Tìm đối sánh cả dấu ngoặc kép thẳng và dấu ngoặc kép. Điểm mấu chốt là biết cách xác định rằng bạn muốn các dấu ngoặc kép được đưa vào tìm kiếm. Đoạn mã sau sẽ thực hiện thủ thuật:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = """my quoted text""" .Format = False .MatchWildcards = False End With Selection.Find.Execute
Chìa khóa trong mã này là cách thông tin được gán cho thuộc tính .Text. Lưu ý rằng bất cứ điều gì bạn đang tìm kiếm (trong trường hợp này là “văn bản được trích dẫn của tôi”) được bao quanh bởi ba dấu ngoặc kép ở mỗi bên. Lý do cho điều này là khá phức tạp: Chuỗi bạn đang tìm kiếm phải được đặt trong dấu ngoặc kép; điều này được yêu cầu bởi VBA. Điều này được hiển thị ở đây:
"my quoted text"
Vì bạn muốn có một ký tự trích dẫn thực tế ở đầu những gì bạn đang tìm kiếm, bạn cần bao gồm dấu trích dẫn thứ hai làm “dấu phân cách” để cho biết bạn muốn tìm ký tự dấu ngoặc kép. Điều này có nghĩa là bây giờ có ba dấu ngoặc kép ở đầu:
"""my quoted text"
Kỹ thuật thêm dấu ngoặc kép tương tự cũng áp dụng cho phần cuối của chuỗi, vì vậy bạn kết thúc với những gì được hiển thị trong đoạn mã.
Khi mã được thực thi, Word tìm thấy một cách cẩn thận chuỗi, được bao quanh bởi bất kỳ kết hợp nào của dấu ngoặc kép thẳng hoặc thông minh, như mong muốn.
Cũng cần lưu ý rằng cách tiếp cận này chỉ hoạt động nếu bạn đang thực hiện tìm kiếm thông thường, với thuộc tính .MatchWildcards được đặt thành False.
_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 (11638) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Word (Word 2007 và sau này) tại đây: