2010年6月11日金曜日

PowershellからExcelを操作する

2007でチェック

Excelの起動と終了

アセンブリを読み込んでExcelを起動するか,COMオブジェクトを作成します.

[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel")
$excel = new-object "Microsoft.Office.Interop.Excel.ApplicationClass"

$excel = new-object -comobject Excel.Application
ウィンドウを表示する場合には,$excel.Visible = $trueとします.
終了するには,$excel.Quit()を実行します.

ワークブックの操作

ワークブックを作成または開くには次のスクリプトを実行します.

$workbook = $excel.Workbooks.Add()                            # 新しいワークブックの作成
$workbook = $excel.Workbooks.Open("Excelワークシートのパス")  # ファイルを開く
$workbook.Save()                                              # 上書き保存
$workbook.SaveAs("Excelワークシートのパス")                   # 名前を付けて保存
ワークブックを閉じるときは,$workbook.Close()を実行します.

シートの操作

まずシートを取得します.シートの番号で選択したり,アクティブなシートを取得したりできます.

$sheet = $workbook.worksheets.Item(1)  # 番号で
$sheet = $workbook.ActiveSheet         # アクティブな
シートのセルにアクセスするには,次のようにします.

$sheet.Cells.Item(1,2) = "B1だよ"
$sheet.Range("A1", "A2").Value2 = "=`$B`$1"

参考

諸々の細かな部分はMSDNライブラリへGO!

この記事を作成するにあった見たのは,

2010/10/28追記

上記の方法で起動したEXCELは,通常の方法(ショートカットを使うなど)で起動したEXCELとは別のウィンドウで開く.Visibleプロパティをtrueにすれば,EXCELを2つ以上ののウィンドウで使いたい場合に役立つ.ただし,Quitメソッドを呼び出さないとウィンドウは閉じていても終了しないので注意が必要.(Office 2010で確認)

2010/11/09追記

実行するとEXCELが開き,閉じると終了するサンプルスクリプト

$excel = new-object -comobject Excel.Application
$excel.Visible = $true
while ($excel.Visible)
{
    Start-Sleep -s 3
}
$excel.Quit()

0 件のコメント:

コメントを投稿