Skip to content

Instantly share code, notes, and snippets.

@hkuno9000
Forked from YoshihitoAso/gist:311b0a1d40174e1bfdae
Last active August 7, 2018 04:26
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save hkuno9000/3f0cd3a0437d149276ca to your computer and use it in GitHub Desktop.
Save hkuno9000/3f0cd3a0437d149276ca to your computer and use it in GitHub Desktop.
[Excel]excelシートの書式をすべて削除するマクロ
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
For Each strFname In WScript.Arguments
Set objDoc = objExcel.Workbooks.Open(strFname)
' clear all names (comment out)
For Each N In objDoc.Names
'' N.Delete
Next
' clear all user style
For Each S In objDoc.Styles
If Not S.BuiltIn Then
S.Delete
End If
Next
objDoc.Save
objDoc.Close
Set objDoc = Nothing
Next
objExcel.Quit

#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

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

VBS化

上記のマクロをVBS化したものを追記する. このVBSにエクセルファイルをドラッグドロップすれば良い.

  • 名前定義の削除はコメントアウトした。必要ならコメントを外して有効にすること.
  • スタイルはユーザスタイル以外を全て削除するように変更した.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment