PowerShell から、Excel をVBAのように使う事が出来ます。VBAよりも PowerShellが好きって方に紹介します。
Excel をプログラムで操作する
Excelの実体は、COMインターフェースと呼ばれるオブジェクトの集合体から構成されています。COMは、Common Object Model の略で、オブジェクトとして再利用できるモジュールしてOSを拡張できる仕組みです。.Net Framework の前の世代にあたります。
Office 製品は、.Net Framework で作られることは無く、いまだにCOMで作成されています。理由は、速度面が大きいのではないかと思います。COMはC++で実装できるので高速ですが、それに比べて.Net Framework は劣ります。
PowerShellからExcel を操作する事は、PowerShell からCOMインターフェースを介して、Excel を操作するという事です。
サンプルプログラム
Excel を新規作成して保存するまでをPowerShellで書いてみます。
$excel = New-Object -ComObject Excel.Application $excel.Visible = $true $book = $excel.Workbooks.Add() $sheet = $book.ActiveSheet $sheet.Cells.Item(2, 1) = "test" $excel.SaveAs("C:\temp\test") $excel.Quit()
1行目のオブジェクトを生成している個所に注目してください。しっかり「ComObject]と書かれていますね。
やってることは VBA と同じです。
PowerShellとVBA
さてVBAとPowerShell どちらが便利でしょうか。
これはもちろん VBAですね。Excel自身にVBAが埋め込まれているし開発ツールも込みです。
その点 PowerShell は外部から触るわけで、スクリプトを別の名前で付ける必要があります。
PowerShellを使う場面は、PowerShellの機能をつかって色々やりつつ、Excel にアクセスするようなケースです。 私は、VBAの BASIC由来の言語体系が可読性に劣るので、PowerShell をちょっと無理してでも使っています。