Cancellare gli stili inutilizzati

From The Document Foundation Wiki
Jump to navigation Jump to search
This page is a translated version of the page Macros/General/004 and the translation is 100% complete.
Other languages:
English • ‎français • ‎italiano

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