PowerShellでエクセル操作していろいろとか

最近久しぶりにエクセルで書かれた仕様書を印刷しようとしたらページ設定がめちゃくちゃになっていて、一つ一つ手で直していたら心が腱鞘炎になりかかったので、PowerShellで一気に直してみました。家にエクセルがないので、正確には何をやっているスクリプトなのか忘れましたが、印刷設定で、横1ページに収まるよう変更します。


$dir = '\\server\shiyousyo\'
$e = New-Object -ComObject Excel.Application
$e.Visible = $true

ls $dir | % {
[void]$e.Workbooks.Open($_.FullName)
Write-Host "file - $($_.Name)"
for($i = 1; $i -le $e.Workbooks.Item(1).Sheets.Count; $i++){
$s = $e.Workbooks.Item(1).Sheets.Item($i)
Write-Host " sheet $($i) - $($s.Name)"
$s.PageSetup.Zoom = $false
$s.PageSetup.FitToPagesWide = 1
$s.PageSetup.FitToPagesTall = 999
}
[void]$e.Workbooks.Item(1).Save()
[void]$e.Workbooks.Close()
}

他にも色々できるんですが、PowerShell Excelとかで検索しても細かい情報はわからないので、他の言語でwin32oleを扱ってるチュートリアルとか読むのがいいのかなー、僕は大体やりたい作業をエクセルマクロで記録して、あとは勘で同じ動作になるようPowerShellをいじってく感じです。Rubyだけど、この記事とか。

Scripting GuyのExcel記事。