Jump to content

マクロ/全般/004

From The Document Foundation Wiki
This page is a translated version of the page Macros/General/004 and the translation is 100% complete.


説明

ここで紹介するマクロは、ドキュメントから未使用のカスタムスタイルを削除する方法を示すことを目的としています。

マクロは最初に "style families" にアクセスします。ドキュメントのタイプに応じて、次のスタイルがあります。 CharacterStylesParagraphStylesFrameStylesPageStylesNumberingStylesCellStylesShapeStyles[1]

次のコードでは、CellStyles コレクションをループして、Calcシートのセルスタイルを検索します。各要素に対して、isUserDefined メソッドと isInUse メソッドを使用して、カスタムスタイルが使用されているかどうかをテストします。[2]

唯一の特徴として、(参照されたコレクションから要素を削除する時に)問題を回避するために、n から ゼロ へ 逆方向に コレクションを参照しています。

Code

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 "終了!"
    Else
        MsgBox "ユーザ定義のスタイル・ファミリーが見つかりません...."
    End If
    
End Sub ' delete_unused_styles

メモ