1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowershellでExcelを操作する(RPAもどき)

Posted at

ExcelをPowershellで自動化してみたくて調べてみました。なお検証はExcel2016のみですので、その点はご了承ください。

Excelの起動

  • Excelファイルtest.xlsxを開く場合
$excel = New-Object -ComObject Excel.Application
$excel.visible = $true
$file = $excel.Workbooks.Open("test.xlsx")
  • 新規にExcelファイルを作成する場合
$excel = New-Object -ComObject Excel.Application
$excel.visible = $true
$file = $excel.Workbooks.Add()
  • 既に起動されているExcelファイルを利用する場合
$excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
$file = $excel.Workbooks.item(1)

セルの操作

  • セルにデータや式を入れる場合

下のプログラムは、シート計算を選択し、セルA1にデータ10を入れ、セルB1に式=A1*2を入れるものです。

$sheet = $file.Worksheets.Item("計算")
$sheet.Cells(1,1) = 10
$sheet.Cells(1,2) = "=A1*2"
  • セルのデータや式を標準出力に出す場合

下のプログラムは、シート計算を選択し、セルB2の値と式を標準出力に出しています。

$sheet = $file.Worksheets.Item("計算")
Write-Host $sheet.Cells(1,2).Value()
Write-Host $sheet.Cells(1,2).Formula()

その他の機能

  • マクロを実行する

マクロMacro1を実行します。

$excel.run("Macro1")
  • メッセージボックスを表示する
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("内容","タイトル")

ファイルの保存と、Excelの修了

  • 保存して終了する場合
$file.Save()
$file.close()
$file = $null
$excel.quit()
$excel = $null
[GC]::Collect()
  • 名前を付けて保存して終了する場合
$file.SaveAs("test2.xlsx")
$file.close()
$file = $null
$excel.quit()
$excel = $null
[GC]::Collect()
  • 保存をしないで終了する場合
$file.close()
$file = $null
$excel.quit()
$excel = $null
[GC]::Collect()
  • ダイアログを出さない設定

上記の場合で、ダイアログが出て終了できない場合は、ダイアログを出さない設定をします。

$excel.DisplayAlerts = $False
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?