Cancellare gli stili inutilizzati
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
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
- ↑ Si veda la documentazione API per il servizio StyleFamilies in inglese.
- ↑ Si veda la documentazione API per l'interfaccia XStyle.