PowerShellでExcelを操作する
YouTube
Example: Excelを新規に作成し、編集し、保存する
test.xlsxを新規作成する例。
# test.xlsxを新規作成する
try {
$excel = New-Object -ComObject Excel.Application # Excel起動
$excel.Visible = $false # 表示する・しない
$book = $excel.Workbooks.Add() # ワークブックを追加
$sheet = $book.Sheets(1) # シートを取得する
$sheet.Cells.Item(1, 1) = 100
$book.saveas("${HOME}\Desktop\test.xlsx") # Excelを保存する
}
finally {
$excel.Quit() # Excelを閉じる
$excel = $null # プロセスを開放する
[GC]::Collect()
}
Example: Excelを開き、編集し、保存する
すでに存在するtest.xlsxを開き、編集し、上書き保存する例。
# すでに存在するtest.xlsxを開き、編集し、上書き保存する
try {
$excel = New-Object -ComObject Excel.Application # Excel起動
$excel.Visible = $false # 表示する・しない
$book = $excel.Workbooks.Open("${HOME}\Desktop\test.xlsx") # ブックを開く
$sheet = $book.Sheets(1) # シートを取得する
$sheet.Cells.Item(1, 1) = [int]$sheet.Cells.Item(1, 1).text + 1
$book.Save() # Excelを上書き保存する
}
finally {
$excel.Quit() # Excelを閉じる
$excel = $null # プロセスを開放する
[GC]::Collect()
}
Example: PowerShellからExcelマクロを実行する
ExcelにあるマクロをPowerShellから実行する例。
Increment.ps1
try {
# オブジェクト作成
$xls = New-Object -ComObject Excel.Application
$xls.Visible = $false
$book = $xls.workbooks.open([string](Resolve-Path (Get-ChildItem "sample.xlsm")))
# マクロ実行
$xls.Run("Increment")
# 保存
$book.Save()
}
finally {
$xls.Quit()
$xls = $null
[GC]::Collect()
}
sample.xlsm
マクロの例
Sub Increment()
Cells(1, 1) = Cells(1, 1) + 1
End Sub
Sub Reset()
Cells(1, 1) = 0
End Sub
参考資料
Sheets object (Excel)| Microsoft Docs
Workbooks.Add method (Excel) | Microsoft Docs
Workbook.SaveAs method (Excel) | Microsoft Docs
Workbook.Save method (Excel) | Microsoft Docs
Workbooks.Open method (Excel) | Microsoft Docs
Application.Run method (Excel) | Microsoft Docs
Application.Quit method (Excel) | Microsoft Docs
Qiita:PowerShell で Excel をどうのこうのすることに興味を持ってくれると嬉しい
PowerShellでExcelを操作する - シートの操作編 -
スポンサーリンク