分かりやすく、使いやすく。

Excel のファイルを新規作成する方法

スポンサーリンク

PowerShell で Excel のファイルを新規作成して保存するサンプルコードです。

  1. 既にファイルが存在する場合、上書き確認ダイアログを表示する
  2. 既にファイルが存在する場合、上書きする


既にファイルが存在する場合、上書き確認ダイアログを表示する

次のサンプルコードでは、バックグラウンドでエクセルのブックを作成した後、1枚目のシートの A1 セルに文字列を入力して c:\temp\test.xlsx にファイルを保存します。

保存の際にファイルが存在する場合は、上書きして良いか確認のダイアログが表示されます。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# ファイル出力先のパス
#(Excel2007より古いバージョンの場合、拡張子を xls に変更してください)
$path_file_output = 'c:\temp\test.xlsx'
 
# エクセルアプリケーションを起動
$objExcel = New-Object -ComObject Excel.Application
 
# バックグランドで実行($false)表示する場合は($true)
$objExcel.Visible = $false
 
# ブックを新規作成して、そのオブジェクトを取得
$objBook  = $objExcel.Workbooks.Add()
 
# ブック内の 1 枚目のシートのオブジェクトを取得
$objSheet = $objBook.Worksheets.Item(1)
 
# シートの行 1 、 列 1 のセル(A1)に文字列を入力
$objSheet.Cells.Item(1,1) = "パワーシェルでエクセル!"
 
# ブックを保存
$objBook.SaveAs($path_file_output)
 
# エクセルのアプリケーションを終了する
$objExcel.Quit()
 
# エクセルのプロセスを終了しメモリを解放する。
# これをやらないとエクセルのプロセスが残ったままになります。
# (プロセスは Windows タスクマネージャー の「プロセス」タブで確認できます。)
$objExcel = $null
[GC]::Collect() 

既にファイルが存在する場合、上書きする

SaveAs メソッドには強制的に上書きするための引数は用意されていないので、事前にファイルの存在をチェックし、ファイルがある場合は削除する処理を入れておくことで、上書きと同じ処理を行います。サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# ファイル出力先のパス
#(Excel2007より古いバージョンの場合、拡張子を xls に変更してください)
$path_file_output = 'c:\temp\test.xlsx'
 
# エクセルアプリケーションを起動
$objExcel = New-Object -ComObject Excel.Application
 
# バックグランドで実行($false)表示する場合は($true)
$objExcel.Visible = $false
 
# ブックを新規作成して、そのオブジェクトを取得
$objBook  = $objExcel.Workbooks.Add()
 
# ブック内の 1 枚目のシートのオブジェクトを取得
$objSheet = $objBook.Worksheets.Item(1)
 
# シートの行 1 、 列 1 のセル(A1)に文字列を入力
$objSheet.Cells.Item(1,1) = "パワーシェルでエクセル!!"
 
# 保存先にファイルが存在する科を確認
if(Test-Path $path_file_output){
  # 存在する場合は事前に削除しておく
  Remove-Item $path_file_output
}
 
# ブックを保存
$objBook.SaveAs($path_file_output)
 
# エクセルのアプリケーションを終了する
$objExcel.Quit()
 
# エクセルのプロセスを終了しメモリを解放する。
# これをやらないとエクセルのプロセスが残ったままになります。
# (プロセスは Windows タスクマネージャー の「プロセス」タブで確認できます。)
$objExcel = $null
[GC]::Collect() 
スポンサーリンク