マクロ/全般/004
Appearance
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Donate
説明
ここで紹介するマクロは、ドキュメントから未使用のカスタムスタイルを削除する方法を示すことを目的としています。
マクロは最初に "style families" にアクセスします。ドキュメントのタイプに応じて、次のスタイルがあります。 CharacterStyles、ParagraphStyles、FrameStyles、PageStyles、NumberingStyles、CellStyles、ShapeStyles[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