Supprimer les styles inutilisés

From The Document Foundation Wiki
Jump to: navigation, search
This page is a translated version of the page Macros/General/004 and the translation is 90% complete.

Outdated translations are marked like this.
Other languages:
English • ‎français

Description

Le programme présenté ici a pour objet de montrer comment supprimer les styles personnalisés inutilisés dans un document.

Le programme commence par accéder aux familles de style. Selon le type de document ces dernières peuvent être CharacterStyles, ParagraphStyles, FrameStyles, PageStyles, NumberingStyles, CellStyles, ShapeStyles.[1]

L'exemple recherche ici dans les styles de cellules d'un classeur. On parcourt donc la collection CellStyles. Pour chaque élément, on utilise les méthodes isUserDefined et isInUse afin de tester s'il s'agit d'un style personnalisé utilisé ou non.[2]

Seule particularité : on parcourt la collection "à l'envers" de n vers zéro pour éviter les problèmes (puisqu'on supprime des éléments de la collection parcourue).

Code

En 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 "Fini!"
    Else
        MsgBox "Famille de style non trouvée..."
    End If
    
End Sub ' delete_unused_styles

Notes

  1. Voir la documentation de l'API pour le service StyleFamilies
  2. Voir la documentation de l'API pour l'interface XStyle