VBA

【VBA】スタイルを削除するマクロ

『スタイル』は別のブックからシートをコピーや移動したときなどに、自動的に追加されてしまうため、意図せずExcelの動作を重たくしたり、エラーを発生させることもあります。
VBAマクロを使用することで、一括削除することができます。不要なスタイルを残さないよう、こまめに実施することをお勧めします。

本ページではWorkbookオブジェクトのStylesプロパティを使用してビルトインスタイル(標準で登録されているスタイル)以外のスタイルを削除する方法を紹介します。

コード

Sub スタイル削除()

  Dim myStyle As Style

  For Each myStyle In ActiveWorkbook.Styles
    'ビルトインスタイル以外を削除
    If myStyle.BuiltIn = False Then
        myStyle.Delete
    End If
  Next
End Sub

解説

WorkbookオブジェクトのStylesプロパティを使用します。

ブックで設定されているすべてのスタイルが含まれているため、For Each文を使ってループします。
For Each myStyle In ActiveWorkbook.Styles

ビルトインスタイルは「標準」や「見出し1」といったデフォルトで組み込まれているスタイルのことを指しています。
全てのスタイルを削除してしまうと「標準」以外残らなくてなってしまうため、ビルトインスタイルは残すように判定を実施しています。
If myStyle.BuiltIn = False Then

全てのスタイルを削除するオプションはないため、登録されているスタイルを1つずつ削除します。
myStyle.Delete

If文の判定を削除すればすべてのスタイルを削除することも可能です。

注意事項

スタイルの数が増えるほど時間が掛かります。スタイルの数によっては完了までに時間が掛かる場合がありますのでご注意ください。

使っていないスタイルを削除したい場合は、空白のブックを新規作成し、すべてのシートをコピーすることで使用しているスタイルだけを残すことも可能です。

参考

Workbook.Styles プロパティ (Excel) | Microsoft Learn
https://learn.microsoft.com/ja-jp/office/vba/api/excel.workbook.styles

Styles オブジェクト (Excel) | Microsoft Learn
https://learn.microsoft.com/ja-jp/office/vba/api/excel.styles