Skip to content

Instantly share code, notes, and snippets.

@YoshihitoAso
Last active September 19, 2019 16:28
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save YoshihitoAso/311b0a1d40174e1bfdae to your computer and use it in GitHub Desktop.
Save YoshihitoAso/311b0a1d40174e1bfdae to your computer and use it in GitHub Desktop.
[Excel]excelシートの書式をすべて削除するマクロ

#Excelシートの書式をすべて削除するマクロ

仕事柄Excelを使うことが多いです。

最近も回ってきた資料を更新していたら、列をコピペして挿入などすると、

「セルの書式が多すぎるため、書式を追加できません」

のエラーが出まくって暫く白目をむいたりした。

ネットで調べたところ、原因としては新しい書式設定をするたびにExcelがそのセルの書式パターンをスタイルとして過去分も蓄積するためらしい。これが例えばExcel2007であれば、64000パターンを超えると上記のエラーが出るようだ。

Excelのホームタブで「スタイル」のところのプルダウンに大量に書式が出てきたら、このエラーが出やすくなっている資料なので、使い回す際は気をつけろということになる。

過去分の書式はマクロを利用して消す事ができる(Excelの標準機能は画面から一つずつ消していくしかない)。

マクロは以下の記事にありました。ありがとうございます。

書式(スタイル)と名前の定義をすべて削除する - ixam

シートの一番下のタブを右クリックして、「コードの表示」を選択して、マクロのソースに以下のコードを貼り付けて、実行すると過去の書式が消える。

Sub delete_name_and_style()

    On Error Resume Next

'名前定義を全削除(名前を関数その他に有効活用している場合はここは削除)

    Dim N As Name
    For Each N In ActiveWorkbook.Names
        N.Delete
    Next

'書式(スタイル)定義を全削除

    Dim M()

    J = ActiveWorkbook.Styles.Count
    ReDim M(J)
    For i = 1 To J
        M(i) = ActiveWorkbook.Styles(i).Name
    Next
    For i = 1 To J
        If InStr("Hyperlink,Normal,Followed Hyperlink", _
                    M(i)) = 0 Then
            ActiveWorkbook.Styles(M(i)).Delete
        End If
    Next

End Sub

このコードは名前定義も削除するコードなので、必要無ければ消しても良い。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment