ブックに登録されているユーザー設定のスタイルを一括削除するマクロです。
他のファイルからセルや表のコピーをすると、そこに含まれるスタイルもコピーされます。
その箇所のスタイルを「標準」などに変えてもコピーされたスタイルは削除されずに残ります。
そのようにして多量にたまってしまったスタイルをまとめて削除できます。
無条件で全削除タイプ
ユーザー設定のスタイル(使用中のものを含む)をすべて削除します。
Sub ユーザー設定スタイル一括削除()
Dim oSty As Style
Dim arySty As Variant
For Each oSty In ActiveWorkbook.Styles
'ビルトインスタイル(削除不可)以外を削除
If oSty.BuiltIn = False Then
oSty.Delete
End If
Next
End Sub
条件付きで削除タイプ
使用中のものなど、一部のユーザー設定のスタイルを残して削除します。残したいスタイル名を指定できます。
Sub ユーザー設定スタイル一括削除2()
Dim oSty As Style
Dim arySty() As Variant
Dim i As Long
Dim flg As Boolean
'== 残したいスタイルの名前を以下に列挙してください =====
arySty = Array("スタイルA", "スタイルB", "スタイルC")
For Each oSty In ActiveWorkbook.Styles
'ビルトインスタイル(削除不可)以外を削除
If oSty.BuiltIn = False Then
flg = True
For i = 0 To ubount(arySty)
If oSty.NameLocal = arySty(i) Then
flg = False
Exit For
End If
Next i
If flg = True Then oSty.Delete
End If
Next
End Sub
StyleObject.BuiltIn = False
.BuiltIn
は組み込みスタイルを判別するものです。組み込みスタイルは削除できないので除外しています。
不使用のスタイルを削除するようにしたかったのですが、ExcelではWordのようなInUseプロパティもなくスタイル名での検索もできません。ブック全体でセルを一つずつ確認すれば判別可能ですが、処理時間が長大になりかねないので断念しました。代替策として、必要なスタイルは名前を指定して残すようにしてみました。