Excel 2010以降で実装されているユーザー定義スタイルをすべて削除して上書き保存するVBScript
使用方法:本ソースファイルを「.vbs」にて保存。スタイルを削除したいExcelファイルを本スクリプトへドラッグ&ドロップすると自動的に開始される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Option Explicit 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 |
- (2019.01.18) ファイルが読み取り専用の場合、上書き保存ができないため操作除外に追加
- (2018.12.17) 保護されたシートが存在する場合、スタイルの削除が無効となるため、チェックを追加