Khả năng tạo và quản lý kiểu là một trong những tính năng mạnh của Word. Kiểu cho phép bạn nhanh chóng và dễ dàng áp dụng định dạng nhất quán trong toàn bộ tài liệu của mình và cập nhật định dạng đó khi nhu cầu của bạn thay đổi.

Word cung cấp khá nhiều kiểu cài sẵn (được xác định trước) và bạn có thể thêm nhiều kiểu khác khi nhu cầu của bạn ra lệnh. Tại một số thời điểm, bạn có thể muốn xác định kiểu nào không được sử dụng trong tài liệu. Danh sách này sau đó có thể được sử dụng để xác định những kiểu bạn có thể dễ dàng xóa, đơn giản vì chúng không còn cần thiết nữa.

Không có cách nào thực chất để tạo danh sách kiểu không sử dụng trong Word.

Thay vào đó, bạn cần tạo một macro để thực hiện công việc cho bạn. Bạn có thể nghĩ rằng việc tạo một macro như vậy sẽ là một nhiệm vụ đơn giản khi xem xét kiểu nào mà Word tin rằng đang sử dụng, sau đó so sánh những kiểu đó với kiểu đã được xác định. Vấn đề với cách tiếp cận này là thuộc tính InUse của VBA (áp dụng cho các đối tượng Kiểu) được sử dụng cho một số mục đích. Định nghĩa chính thức cho thuộc tính InUse là True nếu một trong hai điều kiện sau được đáp ứng:

  • Kiểu là kiểu dựng sẵn đã được sửa đổi hoặc áp dụng trong tài liệu.

  • Kiểu là kiểu do người dùng xác định đã được tạo trong tài liệu.

Điều đó có nghĩa là thuộc tính InUse không cho biết một kiểu có thực sự được sử dụng trong tài liệu hay không. Bạn có thể làm điều gì đó với định nghĩa của một kiểu mà không thực sự áp dụng nó và kiểu đó sẽ được gắn cờ là ‘đang sử dụng’ mặc dù không có bất kỳ văn bản nào trong tài liệu thực sự sử dụng kiểu đó.

Tuy nhiên, có thể tạo danh sách các kiểu không được sử dụng bằng cách sử dụng cả thuộc tính InBuilt và InUse trong macro. Macro VBA sau sử dụng cách tiếp cận này:

Sub CreateStyleList()

Dim docThis As Document     Dim styItem As Style     Dim sBuiltIn(499) As String     Dim iStyBICount As Integer     Dim sUserDef(499) As String     Dim iStyUDCount As Integer     Dim sInUse(499) As String     Dim iStyIUCount As Integer     Dim iParCount As Integer     Dim J As Integer, K As Integer     Dim sParStyle As String     Dim bInUse As Boolean          ' Ref the active document     Set docThis = ActiveDocument          ' Collect all styles being used     iStyIUCount = 0     iParCount = docThis.Paragraphs.Count     iParOut = 0     For J = 1 To iParCount         sParStyle = docThis.Paragraphs(J).Style         For K = 1 To iStyIUCount             If sParStyle = sInUse(K) Then Exit For         Next K         If K = iStyIUCount + 1 Then             iStyIUCount = K             sInUse(iStyIUCount) = sParStyle         End If     Next J          iStyBICount = 0     iStyUDCount = 0     ' Check out styles that are "in use"

For Each styItem In docThis.Styles         'see if in those being used         bInUse = False         For J = 1 To iStyIUCount             If styItem.NameLocal = sInUse(J) Then bInUse = True         Next J         'Add to those not in use         If Not bInUse Then             If styItem.BuiltIn Then                 iStyBICount = iStyBICount + 1                 sBuiltIn(iStyBICount) = styItem.NameLocal             Else                 iStyUDCount = iStyUDCount + 1                 sUserDef(iStyUDCount) = styItem.NameLocal             End If         End If     Next styItem          'Now create the output document     Documents.Add          Selection.TypeText "Styles In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sInUse(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "Built-in Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sBuiltIn(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph          Selection.TypeText "User-defined Styles Not In Use"

Selection.TypeParagraph     For J = 1 To iStyIUCount         Selection.TypeText sUserDef(J)

Selection.TypeParagraph     Next J     Selection.TypeParagraph     Selection.TypeParagraph End Sub

Trước tiên, macro kiểm tra mọi đoạn văn trong tài liệu để xác định tên của các kiểu thực sự đang được sử dụng trong tài liệu. Thông tin này được lưu trữ trong mảng sInUse. Sau đó, macro bắt đầu xem qua danh sách mà Word cho là đang sử dụng – đây là những kiểu thuộc bộ sưu tập Kiểu. Nếu kiểu không có trong mảng sInUse, thì kiểu đó sẽ được thêm vào mảng sBuiltIn (cho kiểu dựng sẵn) hoặc mảng sUserDef (cho kiểu do người dùng xác định). Khi các phép so sánh được thực hiện, một tài liệu mới được tạo ra liệt kê các kết quả.

_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 (1488) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003.