CELLNETS Excel開発の専門会社

【VBA入門】Excelのスタイルを一括削除する方法|大量に増える原因と「セルの書式が多すぎる」エラー対策

スタイル残骸が大量。削除方法は?

Excelブックを長く使っていると、少しずつ「いろんな残骸」がくっついて、サイズが重くなったり、エラーが起きやすくなります。

みなさん、こんにちは。セルネッツ竹本です。

今回は、「残骸の代表格Styleの削除」をテーマに、解説をしたいと思います。

結論から言うと、大量に増えたスタイルは、VBAで「ユーザー定義のスタイルだけ」を一括削除するのが安全です。
組み込みのスタイル(標準・良い・見出し 1など)まで消すと、セルのスタイルの一覧が空になります。
消す前に数を確認し、バックアップを取ってから実行しましょう。

この記事では、次のことがわかります。

  • スタイルが大量に増える原因と、「セルの書式が多すぎるため」などの症状
  • スタイルの数を確認する方法と、手作業・VBAで削除する方法
  • 消してしまった組み込みのスタイルを元に戻す方法と、削除時の注意点

重い・不安定なブックに

スタイルの残骸で重くなったブックを整えます

  • スタイルが大量に増え、ブックが重い
  • 書式の残骸のせいかエラーが起きやすい
  • 長年使い回したブックを作り直すか迷っている

そのお悩み、ブックの残骸整理とツールの見直しで解決できます。Excel専門のシステム開発会社『セルネッツ』なら、不要なスタイルや名前の定義の整理、マクロの改修、新しいブックへの移し替えまで対応します。

\Excel専門特化 × 低価格 × スピード対応/

Excelのスタイル(セルのスタイル)とは?

スタイルとは、フォントや罫線、塗りつぶし、表示形式などの書式に名前を付けて、まとめて登録したものです。

スタイルはExcelに用意された機能です。[ホーム]タブの[セルのスタイル]から選ぶだけで、登録した書式をいつでも呼び出せます。
なお、表に付ける「テーブルスタイル」は別の機能です。この記事で扱うのは「セルのスタイル」です。

が、いろんな書体や書式を試すうちに、それが蓄積されてしまうのです。

便利でもありますが、気づくことがない以上、膨大な個数が見受けられることもあります。

Excelにはいろんな残骸がありますが、「健康的な状態」で使うことが、1.エラー防止 2.サイズ軽量化 3.速度向上 の条件となります。

スタイルには、次の2種類があります。

種類例消してよいか
組み込みのスタイル標準、良い、悪い、見出し 1、桁区切り、20% – アクセント 1 など(新しいブックで47個前後)消さないのが基本。「標準」は削除できない
ユーザー定義のスタイル自分で作ったスタイル、他のブックから持ち込まれた「良い 2」「Normal 2」など使っていなければ削除してよい

スタイルが大量に増える原因と症状

スタイルが増える主な原因は、ブックとブックの間でシートやセルをコピーすることです。

コピーすると、コピー元のユーザー定義のスタイルも一緒に持ち込まれます。
名前がぶつかると「良い 2」「良い 3」のように番号付きで増えていきます。
取引先から届いたブックや、何年も使い回したブックでは、数千〜数万個になっていることもあります。

スタイルが増えすぎると、次のような症状が出ます。

  • 書式を変えようとすると「セルの書式が多すぎるため、書式を追加できません。」と表示される
  • 貼り付けができない、ファイルサイズが大きくなる
  • 開くときに「読み取り不可能なコンテンツが見つかりました」と表示される
  • ブックの動きが重くなり、マクロの実行中にエラーが起きやすくなる

Microsoftによると、書式の組み合わせの上限は.xlsx形式で約64,000、.xls形式で4,000です(参考: Microsoft Learn「Excelのファイル エラー メッセージに読み取り不可能なコンテンツが見つかった」)。
ブックが重い・メモリが足りないといった症状が同時に出ている場合は、ExcelやVBAで「メモリが不足しています」と出るときの原因と対処法もあわせてご覧ください。

まずはスタイルの数を確認する

削除の前に、今いくつスタイルがあるかを確認しましょう。新しいブックなら47個前後です。

いちばん手軽なのは、VBEのイミディエイトウィンドウ(Ctrl+G)に次の1行を入力してEnterキーを押す方法です。

?ActiveWorkbook.Styles.Count

どんなスタイルがあるかを見たいときは、一覧を新しいブックに書き出します。
B列の「組み込み」がFALSEのものが、ユーザー定義のスタイルです。

Sub スタイル一覧の書き出し()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim st As Style
    Dim r As Long

    Set wb = ActiveWorkbook
    Set ws = Workbooks.Add.Worksheets(1)

    ws.Range("A1:C1").Value = Array("名前", "組み込み", "表示名")
    r = 2
    For Each st In wb.Styles
        ws.Cells(r, 1).Value = st.Name
        ws.Cells(r, 2).Value = st.BuiltIn
        ws.Cells(r, 3).Value = st.NameLocal
        r = r + 1
    Next

    MsgBox "スタイルの数: " & wb.Styles.Count & " 個"
End Sub

日本語版のExcelでは、「標準」は名前(Name)が「Normal」、「桁区切り」は「Comma」のように、英語名のスタイルがあります。
一方で「良い」「見出し 1」などは、名前も日本語です。名前で残すスタイルを判定するときは注意してください。

手作業でスタイルを削除する方法

数が少なければ、Excelの画面から1つずつ削除できます。

  1. [ホーム]タブの[セルのスタイル]をクリックする
  2. 消したいスタイルを右クリックし、[削除]を選ぶ
  3. 消したいスタイルの数だけ繰り返す

複数をまとめて選ぶことはできません。数百個以上あるなら、次のVBAを使うほうが早いです。

VBAでユーザー定義のスタイルだけを一括削除する(おすすめ)

BuiltInプロパティで組み込みかどうかを判定し、ユーザー定義のスタイルだけを消すのがおすすめです。

Sub ユーザー定義スタイルの一括削除()
    Dim wb As Workbook
    Dim i As Long
    Dim lngDel As Long
    Dim lngErr As Long

    Set wb = ActiveWorkbook
    Application.ScreenUpdating = False

    '後ろから順に消す(前から消すと番号がずれるため)
    For i = wb.Styles.Count To 1 Step -1
        If Not wb.Styles(i).BuiltIn Then
            On Error Resume Next
            wb.Styles(i).Delete
            If Err.Number = 0 Then
                lngDel = lngDel + 1
            Else
                lngErr = lngErr + 1
                Err.Clear
            End If
            On Error GoTo 0
        End If
    Next

    Application.ScreenUpdating = True

    MsgBox "削除: " & lngDel & " 個" & vbCrLf & _
           "削除できなかった: " & lngErr & " 個" & vbCrLf & _
           "残り: " & wb.Styles.Count & " 個"
End Sub

このコードのポイントは、次の3つです。

  • BuiltInがTrueの組み込みのスタイルは残すので、[セルのスタイル]の一覧が空にならない
  • 後ろから順に削除するので、途中で番号がずれて消し残すことがない
  • 削除できなかった数を表示するので、失敗に気づける

弊社の環境(Microsoft 365のExcel)で同じ処理を試したところ、ユーザー定義のスタイル300個を約1秒で削除でき、組み込みのスタイル47個はすべて残りました。
数万個ある場合は、数分以上かかることがあります。
BuiltInプロパティの仕様は、Microsoft Learn「Style.BuiltIn プロパティ」で確認できます。

組み込みのスタイルも含めて一括削除するコード

次のコードは、「Hyperlink」「Normal」「Followed Hyperlink」以外のスタイルを、組み込みかどうかに関係なくすべて削除します。

Dim S_スタイル個数 As Long
Dim SO_配列()

'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_スタイル削除()
'※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

On Error Resume Next

'★書式(スタイル)定義を全削除
S_スタイル個数 = ActiveWorkbook.Styles.Count

ReDim SO_配列(S_スタイル個数)

For S_Idx = 1 To S_スタイル個数

    SO_配列(S_Idx) = ActiveWorkbook.Styles(S_Idx).Name

Next

For S_Idx = 1 To S_スタイル個数

    If InStr("Hyperlink,Normal,Followed Hyperlink", SO_配列(S_Idx)) = 0 Then

        ActiveWorkbook.Styles(SO_配列(S_Idx)).Delete

    End If

Next

MsgBox "" & vbCrLf & _
"S_スタイル個数= " & S_スタイル個数

End Sub

このコードを使うときは、次の点に注意してください。

  • 日本語版のExcelでは、「良い」「見出し 1」などの組み込みのスタイルも削除される。新しいブックで試すと、47個のうち「Normal」以外はすべて消えた
  • InStrは部分一致で判定するため、「link」のように残す名前の一部と同じ名前のスタイルは、消されずに残る
  • On Error Resume Nextで、削除できなかったスタイルがあっても気づけない
  • MsgBoxに表示されるのは、削除する前のスタイルの数

Styleすべてが悪いわけではありませんので、まずは、個数を調べてみると良いでしょう。

初期状態に戻すには、まっさらな別のExcelブックのStyleをいただいてくるだけなので、問題はないと思いますが、健康なブック状態を心がけましょう。

新しいブックからスタイルを取り込むには、Styles.Mergeメソッドを使います。
ただし、取り込むと「標準」スタイルも新しいブックの設定で上書きされ、ブック全体のフォントが変わることがあります。
次のコードでは、元の「標準」のフォント名とサイズを控えておき、取り込んだ後に戻しています。

Sub 組み込みスタイルを元に戻す()
    Dim wbTarget As Workbook
    Dim wbNew As Workbook
    Dim strFont As String
    Dim dblSize As Double

    Set wbTarget = ActiveWorkbook

    '「標準」のフォントを控える(Mergeで上書きされるため)
    strFont = wbTarget.Styles("Normal").Font.Name
    dblSize = wbTarget.Styles("Normal").Font.Size

    Set wbNew = Workbooks.Add
    Application.DisplayAlerts = False
    wbTarget.Styles.Merge Workbook:=wbNew
    Application.DisplayAlerts = True
    wbNew.Close SaveChanges:=False

    '「標準」のフォントを元に戻す
    wbTarget.Styles("Normal").Font.Name = strFont
    wbTarget.Styles("Normal").Font.Size = dblSize

    MsgBox "スタイルの数: " & wbTarget.Styles.Count & " 個"
End Sub

弊社の環境では、削除した組み込みのスタイル「良い」が、この方法で元に戻ることを確認しています。
「標準」の表示形式や配置を変えている場合は、それらも上書きされるため、取り込んだ後に確認してください(参考: Microsoft Learn「Styles.Merge メソッド」)。

スタイルを削除する方法の比較

迷ったら、ユーザー定義だけを消すVBAを選んでください。

方法消えるスタイル向いているケース注意点
手作業(右クリック→削除)選んだものだけ数が少ない、消すものを選びたい1つずつしか消せない
VBA(ユーザー定義だけ)ユーザー定義のスタイル数百〜数万個に増えた(おすすめ)数万個だと時間がかかる
VBA(組み込みも含む)標準などを除くほぼすべて一覧を空にして作り直したい戻すにはMergeが必要
新しいブックに作り直す持ち込まなければ増えないブックが開けない・壊れかけているシートのコピーでは、スタイルも一緒に移る

スタイルを一括削除するときの注意点

VBAで削除したスタイルは、元に戻す(Ctrl+Z)では戻せません。必ずバックアップを取ってから実行してください。

  • 使っているスタイルを消すと書式が消える: 削除したスタイルが付いていたセルは「標準」に戻り、塗りつぶしや太字が外れる
  • 保護されたシートがあると削除できない: 保護中のシートで使われているスタイルは、削除でエラーになる。先にシートの保護を解除する
  • エラーを無視しっぱなしにしない: On Error Resume Nextを使うときは、失敗した数を数えるなどして確認する。詳しくはOn Error Resume Nextの使い方と注意点で解説している
  • 消しても、またコピーで増える: 他のブックからシートをコピーすると再発する。値だけを貼り付けるなど、持ち込まない運用にする

社内で配るブックやツールは、渡す前にスタイルや名前の定義が残っていないかを点検しておくと安心です。点検する項目はExcelシステムの納品前に点検するブックの重要7項目にまとめています。

よくある質問

Q. 組み込みのスタイルは消してもよいですか?

A. 消さないのが基本です。組み込みのスタイルは数が決まっており、ブックが重くなる原因にはなりにくいためです。「標準」は削除できません。

Q. 消してしまったスタイルは元に戻せますか?

A. 組み込みのスタイルは、新しいブックからStyles.Mergeで取り込めば戻せます。ユーザー定義のスタイルは、バックアップのブックから取り込むか、作り直してください。

Q. スタイルを削除してもファイルが軽くなりません。

A. 削除した後に上書き保存し、開き直してから確認してください。それでも重い場合は、他の残骸が原因かもしれません。リンク切れの「名前の定義」も同じように残りやすい残骸です。消し方は不要な「名前の定義」を一括削除する方法で紹介しています。

まとめ

今回のテーマは、「残骸の代表格Styleの削除」について、解説を行いました。

  • スタイルは、ブック間でシートやセルをコピーするたびに増えていく
  • まずStyles.Countで数を確認し、バックアップを取ってから削除する
  • 一括削除は、BuiltInで判定してユーザー定義だけを消すのが安全
  • 組み込みのスタイルを消してしまったら、新しいブックからMergeで戻せる

スタイル以外にも、Excelのブックが不安定になる原因はいくつもあります。Excelでよく起きる不具合10選と回避術もあわせてご覧ください。

本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。


Excel業務改善事例ショート動画

文章だけでは伝わりにくい改善事例を、ショート動画でご覧いただけます。

◆よくある質問 ◆Excel業務改善の実例 ◆VBA・マクロ活用事例

Excelエラー解決サービス

不安定なブックのエラー、1件30,000円で対応

  • 対応時間は1件あたり3時間以内
  • 解決できなかった場合は料金不要
  • 作り直しが必要なら別途お見積もり

残骸を整理してもエラーが続く場合は、Excelエラー解決サービス(1件30,000円・税別)をご利用ください。リモート接続での対応も可能で、解決できなかった場合は料金不要です。作り直しは相見積もりも歓迎です。

\Excel専門特化 × 低価格 × スピード対応/

エラー解決サービスを相談する

全国対応・お見積もり無料

Excel業務改善事例ショート動画よくある質問など公開中

関連記事

Excelシステム開発

Excelを複数人で共同編集する方法|オンライン共有の手順と事例

更新日:2026年11月4日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年11月4日

newsite