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.


    Other languages:

    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