
Tips.Net > WordTips Home > Formatting > Styles > Searching for Styles > Finding Unused Styles
Summary: Use this VBA macro to determine which styles are being used in the current Word document. (This tip works with Microsoft Word 97, Word 2000, Word 2002, and Word 2003.)
The capability to create and manage styles is one of the strong features of Word. Styles allow you to quickly and easily apply consistent formatting throughout your document, and update that formatting as your needs change.
Word provides quite a few built-in (predefined) styles, and you can add more as your needs dictate. At some time you might want to determine which styles are not in use in a document. This list could then be used to determine which styles you could easily delete, simply because they are no longer needed.
There is no intrinsic way to create an unused style list in Word. Instead, you need to create a macro to do the job for you. You might think that creating such a macro would be a simple task of looking at which styles Word believes are in use, and then comparing those to the styles which are defined. The problem with this approach is that VBA's InUse property (which applies to Style objects) is used for several purposes. The official definition for the InUse property is that it's True if either of the following two conditions are met:
What that means is that the InUse property doesn't indicate if a style is actually in use in the document. You could do something to the definition of a style without actually applying it, and that style would be flagged as 'in use' even though there isn't any text in the document actually using the style.
However, it is possible to generate a list of styles not in use by using both the InBuilt and InUse properties in a macro. The following VBA macro uses this approach:
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
The macro first examines every paragraph in the document to determine the names of the styles actually being used in the document. This information is stored in the sInUse array. Then, the macro starts looking through the list which Word thinks are in use--these are the styles that belong to the Styles collection. If the style is not in the sInUse array, then it is added either to the sBuiltIn array (for built-in styles) or the sUserDef array (for user-defined styles). When the comparisons are done, a new document is created that lists the results.
Tip #1488 applies to Microsoft Word versions: 97 2000 2002 2003
More Power! For some people, the prospect of creating Word macros can be scary. WordTips: The Macros can help you conquer your fears and you'll discover you're much more confident and productive as you make Word do exactly what you want. This is an invaluable source for learning macros. You are introduced to the topic in bite-sized chunks, pulled from past issues of WordTips. Learn at your own pace, exactly the way you want.
Check out WordTips: The Macros today!
Add power to your purpose with Word. A comprehensive 480+ page e-book explains everything you need to know about macros. (more information...)
Ask a Word Question
Make a Comment
Beauty Tips
Bugs and Pests Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Money Tips
Organizing Tips
Pet Tips
Word2007 Tips
WordTips