
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つずつ削除できます。
- [ホーム]タブの[セルのスタイル]をクリックする
- 消したいスタイルを右クリックし、[削除]を選ぶ
- 消したいスタイルの数だけ繰り返す
複数をまとめて選ぶことはできません。数百個以上あるなら、次の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専門特化 × 低価格 × スピード対応/
全国対応・お見積もり無料
