Excel ユーザー設定のスタイルを一括削除する

ブックに登録されているユーザー設定のスタイルを一括削除するマクロです。

他のファイルからセルや表のコピーをすると、そこに含まれるスタイルもコピーされます。

その箇所のスタイルを「標準」などに変えてもコピーされたスタイルは削除されずに残ります。

そのようにして多量にたまってしまったスタイルをまとめて削除できます。

無条件で全削除タイプ

ユーザー設定のスタイル(使用中のものを含む)をすべて削除します。

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プロパティもなくスタイル名での検索もできません。ブック全体でセルを一つずつ確認すれば判別可能ですが、処理時間が長大になりかねないので断念しました。代替策として、必要なスタイルは名前を指定して残すようにしてみました。
タイトルとURLをコピーしました