#Excelシートの書式をすべて削除するマクロ
仕事柄Excelを使うことが多いです。
最近も回ってきた資料を更新していたら、列をコピペして挿入などすると、
「セルの書式が多すぎるため、書式を追加できません」
のエラーが出まくって暫く白目をむいたりした。
ネットで調べたところ、原因としては新しい書式設定をするたびにExcelがそのセルの書式パターンをスタイルとして過去分も蓄積するためらしい。これが例えばExcel2007であれば、64000パターンを超えると上記のエラーが出るようだ。
Excelのホームタブで「スタイル」のところのプルダウンに大量に書式が出てきたら、このエラーが出やすくなっている資料なので、使い回す際は気をつけろということになる。
過去分の書式はマクロを利用して消す事ができる(Excelの標準機能は画面から一つずつ消していくしかない)。
マクロは以下の記事にありました。ありがとうございます。
シートの一番下のタブを右クリックして、「コードの表示」を選択して、マクロのソースに以下のコードを貼り付けて、実行すると過去の書式が消える。
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
このコードは名前定義も削除するコードなので、必要無ければ消しても良い。