Windows PowerShell を使って Excel を操作する - シート操作編
windows環境で Excel をプログラム言語で操作する方法に VBA がよく紹介されてますが、 Windows PowerShell でもお手軽に操作することが可能なので、紹介していきたいと思います。
使用環境
- Windows 10
- Windows PowerShell 5.1
- Microsoft Excel 2016
操作方法
Excel を起動
まずは、Excelを起動させましょう。
# Excelのプロセスを起動
$excel = New-Object -ComObject Excel.Application
# 起動したExcelを表示する
$excel.Visible = $true
上記のコマンドを順に実行すると以下の状態でExcelが起動します。
ワークブックを作成
今の状態では、何もないExcelなので、ワークブックを作成しましょう。
# 新規のワークブックを作成
$book = $excel.Workbooks.Add()
上記のコマンドで新規のワークブックが作成されます。
Excelを起動させた直後によく見る状態ですね。
シートの追加とシート名の変更
シートの追加とシート名の変更をしてみましょう。
# シートの追加
$book.Worksheets.Add()
# シート名の変更 - シート番号で指定
$book.WorkSheets.item(1).name = "hoge"
# シート名の変更 - シート名で指定
$book.WorkSheets.item("Sheet1").name = "fuga"
# シートをコピー - hogeをコピーしてfugaの前に配置
$book.Worksheets.item("hoge").copy($book.Worksheets.item("fuga"))
上記のコマンドを順に実行すると3つのシートが作成された状態になります。
# シートの追加
$book.Worksheets.Add()
Addによるシートの追加を行った場合、一番手前(シートの並びの一番左側)に追加されます。
# シート名の変更 - シート番号で指定
$book.WorkSheets.item(1).name = "hoge"
# シート名の変更 - シート名で指定
$book.WorkSheets.item("Sheet1").name = "fuga"
操作対象のシートの指定は、並び順によるシート番号の指定または、シート名で指定することができます。
シートの削除
シートを削除してみましょう。
# シートを削除 - シート番号で指定
$book.WorkSheets.item(3).delete()
# シートを削除 - シート名で指定
$book.WorkSheets.item("hoge (2)").delete()
上記のコマンドを順に実行するとシート2つ削除され1つだけシートが残っている状態になります。
ワークブックの保存
作成したワークブックを保存しましょう。
# 名前をつけて保存
$book.SaveAs("C:\tmp\exsample.xlsx")
SaveAs()
の引数にファイルパスを設定することで、指定のフォルダ配下に指定したファイル名で保存されます。
Excel を閉じる
開いている Excel を閉じてみましょう。
# Excelを閉じる
$excel.Quit()
# プロセスを解放する
$excel = $null
[GC]::Collect()
Quit()
だけでは、開いていたワークブックを閉じるだけなので、プロセスが残ったままなので、併せてプロセスの解放を行ってあげる必要があります。
以上、シートの基本操作でした。次回はセルの操作について紹介したいと思います。