見つけた情報が自分の環境では動かなかったので、同等のスクリプトを PowerShell で動くようにしました。
例によって batファイルを経由して動く 想定です。
試運転では問題なく動いているように見えますが、実際に処理したいファイルでは試していません。試して駄目だったらまた考えます。
動きました。
$excel = new-object -com excel.application
$excel.visible = $True
foreach ( $xlsx in $Args) {
Write-Host $("Opening...: " + $xlsx)
$book = $excel.Workbooks.Open($xlsx)
$changeflag = $False
$count = 0
$book.Styles | Where-Object Builtin -eq $False | ForEach-Object {
Write-Host $("Style Deleting...: " + $_.Name)
$_.Delete() > $null
$changeflag = $True
if($count++ -gt 500){
Write-Host "Saving...: $xlsx"
$book.Save()
$count = 0
}
}
if ($changeflag) {
Write-Host "Saving...: $xlsx"
$book.Save()
}
$book.Close()
}
$excel.quit()
一部消えないスタイルがありましたが、style.xmlを修正 したら消せるようになりました。