Option Explicit ' Excel 2010以降で実装されているユーザー定義スタイルをすべて削除して上書き保存する ' 使用方法:本ソースファイルを「.vbs」にて保存。スタイルを削除したいExcelファイルを本スクリプトへドラッグ&ドロップすると自動的に開始される。 Dim objExcel ' Excelアプリケーション Dim objWB ' ワークブックオブジェクト Dim tmpFN ' ループ変数(ファイル名) Dim tmpSh ' ループ変数(ワークシート) Dim tmpProtected ' ループ変数(シート保護) Dim tmpStyle ' ループ変数(スタイル) ' 直接実行しても動作しない If WScript.Arguments.Count = 0 Then WScript.Quit ' Excelを開く Set objExcel = CreateObject("Excel.Application") ' Excelアプリケーションを表示する ※非表示とする場合は False とする objExcel.Visible = True ' ドラッグアンドドロップされたファイルをひとつずつExcelで開く For Each tmpFN In WScript.Arguments Set objWB = objExcel.Workbooks.Open(tmpFN) ' 保護されたシートがあるか確認する tmpProtected = False For Each tmpSh In objWB.Sheets If tmpSh.ProtectContents Then tmpProtected = True End If Next ' ユーザー定義スタイルを削除する ' 破損したスタイルなどは削除できない場合もあるため、エラー処理を追加 If Not tmpProtected And Not objWB.ReadOnly Then On Error Resume Next For Each tmpStyle In objWB.Styles ' 組み込みスタイル以外を削除する If Not tmpStyle.BuiltIn Then tmpStyle.Delete End If Next On Error GoTo 0 ' 削除が終わったら上書き保存 objWB.Save Else MsgBox "保護されたシートがあるか、ファイルが読み取り専用のため処理を中断します", vbOKOnly + vbCritical, WScript.ScriptName End If ' ワークブックを閉じる objWB.Close Set objWB = Nothing Next ' Excelを終了する objExcel.Quit Set objExcel = Nothing MsgBox "ユーザー定義スタイル一括削除処理完了", vbOKOnly + vbInformation, WScript.ScriptName