Cancellare gli stili inutilizzati
TDF LibreOffice Blog comunitari Weblate(traduci) Autori 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.