Jump to content

Nicht verwendete Vorlagen löschen

From The Document Foundation Wiki
This page is a translated version of the page Macros/General/004 and the translation is 100% complete.


Beschreibung

Das hier gezeigte Makro soll zeigen, wie nicht verwendete Vorlagen aus einem Dokument entfernt werden.

Das Makro startet mit dem Zugriff auf die "Vorlagenfamilie". Abhängig vom Dokumententyp können diese Zeichenvorlagen, Absatzvorlagen, Rahmenvorlagen, Seitenvorlagen, Nummerierungsvorlagen, Zellenvorlagen oder Profilvorlagen sein.[1]

Der folgende Code durchsucht die Zellvorlagen eines Calc Tabellenblattes, in welcher die Sammlung der Zellvorlagen' duchgegangen wird. Für jedes Element werden die Methoden isUserDefined und isInUse verwendet, um zu testen, ob es als allgemeine Vorlage verwendet wird oder nicht.[2]

Die einzige Besonderheit ist, dass wir "rückwärts" von n bis 0 arbeiten um Probleme zu umgehen (wir löschen Elemente aus der durchsuchten Kollektion).

Code

In LibreOffice Basic:

Option Explicit

Sub delete_unused_styles ()
    
    Dim oStylesF    As Object
    Dim oStyles     As Object
    Dim oStyle      As Object
    Dim i           As Integer
    
    oStylesF = ThisComponent.getStyleFamilies

    If oStylesF.hasByName("CellStyles") Then
        oStyles = oStylesF.getByName("CellStyles")
        
        For i = UBound(oStyles.ElementNames) To 0 Step -1
            oStyle = oStyles.getByName(oStyles.ElementNames(i))
            
            If oStyle.isUserDefined And Not(oStyle.isInUse) Then
                oStyle = Nothing
                oStyles.removeByName(oStyles.ElementNames(i))
            End If
        Next i
        
        MsgBox "Fertig!"
    Else
        MsgBox "Keine User-definierten Vorlagen gefunden..."
    End If
    
End Sub ' delete_unused_styles

Hinweise