Tạo danh sách phông chữ tài liệu (Microsoft Word)
Word cho phép bạn sử dụng các phông chữ được cài đặt trên hệ thống bạn đang sử dụng. Phông chữ được cài đặt trong Windows để chúng không chỉ có sẵn cho Word mà còn cho tất cả các chương trình được cài đặt trên hệ thống của bạn.
Khi bạn đang tạo một tài liệu trên hệ thống của mình, thật dễ dàng biết được những phông chữ nào đang được sử dụng — danh sách phông chữ được giới hạn cho những phông chữ có sẵn trên hệ thống. Tuy nhiên, nếu bạn nhận được tài liệu từ một người khác, hệ thống của người đó có thể được cài đặt phông chữ khác với bạn. Điều này có nghĩa là tài liệu Word của họ có thể được định dạng bằng các phông chữ mà bạn thậm chí không có trên hệ thống của mình.
Nếu bạn muốn tạo danh sách các phông chữ được sử dụng trong tài liệu (trái ngược với danh sách các phông chữ có sẵn trên hệ thống), bạn có một số lựa chọn. Trước hết, bạn có thể mở tài liệu Word trong trình soạn thảo văn bản và nhìn xung quanh các phần của tài liệu mà bạn thường không thấy trong Word. Gần cuối tệp, bạn sẽ thấy danh sách các phông chữ được sử dụng trong tài liệu. Tuy nhiên, nếu bạn làm điều này, bạn nên hết sức cẩn thận để không thực hiện bất kỳ thay đổi nào đối với tài liệu Word khi nó đang mở trong trình soạn thảo văn bản của bạn. Làm như vậy có thể dễ dàng khiến tài liệu không còn sử dụng được trong Word.
Giải pháp dựa trên Word là chỉ cần xem qua từng ký tự trong tài liệu và kiểm tra phông chữ nào được sử dụng để định dạng ký tự. Phương pháp tiếp cận từng ký tự là cần thiết vì mỗi ký tự có thể được định dạng bằng một phông chữ khác nhau và VBA không cho phép bạn truy cập vào bộ sưu tập phông chữ liên quan đến chính tài liệu — có vẻ như không có bộ sưu tập nào như vậy được duy trì. Như vậy, an toàn nhất (và chậm nhất)
phương pháp là chỉ cần bước qua từng ký tự và tạo danh sách của riêng bạn. Macro VBA sau hoàn thành nhiệm vụ:
Public Sub ListFontsInDoc() Dim FontList(199) As String Dim FontCount As Integer Dim FontName As String Dim J As Integer, K As Integer, L As Integer Dim X As Long, Y As Long Dim FoundFont As Boolean Dim rngChar As Range Dim strFontList As String FontCount = 0 X = ActiveDocument.Characters.Count Y = 0 ' For-Next loop through every character For Each rngChar In ActiveDocument.Characters Y = Y + 1 FontName = rngChar.Font.Name StatusBar = Y & ":" & X ' check if font used for this char already in list FoundFont = False For J = 1 To FontCount If FontList(J) = FontName Then FoundFont = True Next J If Not FoundFont Then FontCount = FontCount + 1 FontList(FontCount) = FontName End If Next rngChar ' sort the list StatusBar = "Sorting Font List" For J = 1 To FontCount - 1 L = J For K = J + 1 To FontCount If FontList(L) > FontList(K) Then L = K Next K If J <> L Then FontName = FontList(J) FontList(J) = FontList(L) FontList(L) = FontName End If Next J StatusBar = "" ' put in new document Documents.Add Selection.TypeText Text:="There are " & _ FontCount & " fonts used in the document, as follows:" Selection.TypeParagraph Selection.TypeParagraph For J = 1 To FontCount Selection.TypeText Text:=FontList(J) Selection.TypeParagraph Next J End Sub
Rõ ràng, tài liệu của bạn càng dài, macro sẽ càng mất nhiều thời gian để hoàn thành. (Tôi chạy macro trên tài liệu 1.100 trang và mất khoảng 46 phút. Trên tài liệu 5 trang, mất chưa đầy một phút.) Khi hoàn tất, macro sẽ tạo một tài liệu mới chứa danh sách được sắp xếp các phông chữ được sử dụng.
_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 (13313) áp dụng cho Microsoft Word 2007, 2010 và 2013.
Bạn có thể tìm phiên bản của mẹo này cho giao diện menu cũ hơn của Word tại đây: