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を操作する - シートの操作編 -


スポンサーリンク