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


スポンサーリンク