Die Fähigkeit, Stile zu erstellen und zu verwalten, ist eine der Hauptfunktionen von Word. Mit Stilen können Sie schnell und einfach konsistente Formatierungen in Ihrem Dokument anwenden und diese Formatierungen aktualisieren, wenn sich Ihre Anforderungen ändern.

Word bietet eine Reihe integrierter (vordefinierter) Stile, und Sie können je nach Bedarf weitere hinzufügen. Zu einem bestimmten Zeitpunkt möchten Sie möglicherweise feststellen, welche Stile in einem Dokument nicht verwendet werden. Diese Liste kann dann verwendet werden, um zu bestimmen, welche Stile Sie leicht löschen können, einfach weil sie nicht mehr benötigt werden.

Es gibt keine intrinsische Möglichkeit, eine nicht verwendete Stilliste in Word zu erstellen.

Stattdessen müssen Sie ein Makro erstellen, um die Aufgabe für Sie zu erledigen. Sie könnten denken, dass das Erstellen eines solchen Makros eine einfache Aufgabe wäre, zu prüfen, welche Stile von Word verwendet werden, und diese dann mit den definierten Stilen zu vergleichen. Das Problem bei diesem Ansatz besteht darin, dass die InUse-Eigenschaft von VBA (die für Style-Objekte gilt) für verschiedene Zwecke verwendet wird. Die offizielle Definition für die InUse-Eigenschaft lautet, dass es wahr ist, wenn eine der beiden folgenden Bedingungen erfüllt ist:

  • Der Stil ist ein integrierter Stil, der im Dokument geändert oder angewendet wurde.

  • Der Stil ist ein benutzerdefinierter Stil, der im Dokument erstellt wurde.

Dies bedeutet, dass die InUse-Eigenschaft nicht angibt, ob im Dokument tatsächlich ein Stil verwendet wird. Sie können etwas an der Definition eines Stils tun, ohne ihn tatsächlich anzuwenden, und dieser Stil wird als „in Verwendung“ gekennzeichnet, obwohl das Dokument keinen Text enthält, der den Stil tatsächlich verwendet.

Es ist jedoch möglich, eine Liste von Stilen zu erstellen, die nicht verwendet werden, indem sowohl die InBuilt- als auch die InUse-Eigenschaften in einem Makro verwendet werden. Das folgende VBA-Makro verwendet diesen Ansatz:

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

Das Makro untersucht zunächst jeden Absatz im Dokument, um die Namen der Stile zu ermitteln, die tatsächlich im Dokument verwendet werden. Diese Informationen werden im sInUse-Array gespeichert. Anschließend durchsucht das Makro die Liste, von der Word glaubt, dass sie verwendet wird. Dies sind die Stile, die zur Styles-Auflistung gehören. Wenn sich der Stil nicht im sInUse-Array befindet, wird er entweder dem sBuiltIn-Array (für integrierte Stile) oder dem sUserDef-Array (für benutzerdefinierte Stile) hinzugefügt. Nach Abschluss der Vergleiche wird ein neues Dokument erstellt, in dem die Ergebnisse aufgelistet sind.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die beliebteste Textverarbeitungssoftware der Welt.) Dieser Tipp (1488) gilt für Microsoft Word 97, 2000, 2002 und 2003.