Cancellare gli stili inutilizzati

    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:

    Descrizione

    La macro qui presentata ha lo scopo di mostrare come rimuovere gli stili personalizzati inutilizzati da un documento.

    La macro inizia accedendo alle "famiglie di stili". A seconda del tipo di documento questi possono essere CharacterStyles, ParagraphStyles, FrameStyles, PageStyles, NumberingStyles, CellStyles, ShapeStyles.[1]

    Il codice seguente cerca tra gli stili di cella di un foglio di Calc, in cui viene ripetuta la raccolta CellStyles. Per ogni elemento vengono utilizzati i metodi isUserDefined e isInUse per verificare se si tratta di uno stile personalizzato utilizzato o meno.[2]

    L'unica particolarità è che scorriamo la raccolta "indietro" da n a zero per evitare problemi (dato che eliminiamo elementi dalla raccolta sfogliata).

    Codice

    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 "Fatto!"
        Else
            MsgBox "Nessuna famiglia di stili definita dall'utente trovata... (la macro restituisce la scritta in inglese, se non viene modificato il codice basic: No user-defined style families found...)"
        End If
        
    End Sub ' delete_unused_styles

    Note