PowerShellはWindowsの標準機能でありながら、Excelの読み書きや自動化処理にも対応できる非常に強力なツールです。
VBAやPythonを使わなくても、PowerShellを使えば業務レポートの自動生成や表の更新が可能です。
この記事では、PowerShellでExcelを開く、データを読み取る、書き込む、保存するなどの基本操作をサンプルコード付きでわかりやすく解説します。
エクセル業務を効率化したい方に、特におすすめの内容です。
前提:Excel操作にはCOMオブジェクトを使う
PowerShellでは Excel.Application というCOMオブジェクトを使ってExcelを操作します。
これはWindowsのExcelアプリ(Office)がインストールされていることが前提です。
Excelファイルを開いて中身を読む
基本コード
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open("C:\Data\report.xlsx")
$sheet = $workbook.Sheets.Item(1)
# セルの内容を取得
$value = $sheet.Cells.Item(2, 1).Text
Write-Host "A2の値は:$value"
# 終了処理
$workbook.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
ポイント
- Visible = $false で画面を非表示に
- Cells.Item(行, 列) で任意のセルを取得
- 後始末(COMオブジェクトの解放)を忘れずに
Excelファイルに書き込む
セルに値を書き込む
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open("C:\Data\report.xlsx")
$sheet = $workbook.Sheets.Item(1)
# A2セルに書き込み
$sheet.Cells.Item(2, 1).Value2 = "売上合計"
# 上書き保存して閉じる
$workbook.Save()
$workbook.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
新規Excelファイルを作成して保存する
新規作成コード
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$sheet = $workbook.Sheets.Item(1)
# 見出しとデータを入力
$sheet.Cells.Item(1,1).Value2 = "名前"
$sheet.Cells.Item(1,2).Value2 = "売上"
$sheet.Cells.Item(2,1).Value2 = "山田"
$sheet.Cells.Item(2,2).Value2 = 120000
# ファイルを保存
$savePath = "C:\Data\new_report.xlsx"
$workbook.SaveAs($savePath)
$workbook.Close()
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
Write-Host "Excelファイルを保存しました:$savePath"
応用:複数行のデータを一括書き込み
$data = @(
@{Name = "佐藤"; Sales = 100000},
@{Name = "田中"; Sales = 95000},
@{Name = "鈴木"; Sales = 110000}
)
$row = 2
foreach ($entry in $data) {
$sheet.Cells.Item($row, 1).Value2 = $entry.Name
$sheet.Cells.Item($row, 2).Value2 = $entry.Sales
$row++
}
このように、PowerShellの配列とループを使えば、Excelに一括で表形式のデータを書き込むことも可能です。
よくあるエラーと対処法
エラー内容 | 原因と対策 |
---|---|
Exception calling "Open" |
ファイルパスの指定ミス。拡張子含め正しいパスにする |
Access Denied |
別のアプリでファイルが開かれていると保存できない |
null 参照エラー |
Excelやワークブック、シートの取得に失敗している可能性 |
Excel業務の自動化に活用できる例
- 毎月の売上レポートを自動作成
- フォルダ内のCSVファイルをExcelにまとめる
- Excelで作ったテンプレートにデータを差し込む
- 定期的にExcelを開いてメール送信する準備を自動で行う
まとめ
PowerShellを使えば、VBAや他のプログラミング言語を使わなくてもExcelの読み書きを自動化することが可能です。
特に、Windows環境で業務自動化を進めたい場合には、非常に有効な選択肢です。
今後は、複数ファイルのバッチ処理やグラフ生成など、さらに高度な使い方も紹介予定です。
この記事を参考に、ぜひご自身の業務にもPowerShellのExcel操作を取り入れてみてください!