PowerShellからWordの差込印刷を実施

 PowerShellからWordの差込印刷を実施

経緯

PowerShellでシステムを作ったときに帳票を出力するためにWordの差し込み印刷を利用する。実際にはファイルパスについてはtempフォルダを作成し、テンプレートとなるWordファイルをコピーし、元データとなるCSVファイルやExcelファイルを合わせて出力する想定


サンプルソース

# Word アプリケーションオブジェクトを生成
$word = New-Object -ComObject Word.Application

# Word を表示
$word.Visible = $false
# DisplayAlertsをFalseに設定(警告を非表示)
$wdAlertsNone = 0;
$word.DisplayAlerts = $wdAlertsNone;

# Word 文書を開く
$docPath = "C:\Users\user1\DeskTop\Sample\templete1.docx" # テンプレートのパス
$document = $word.Documents.Open($docPath)

# データソース (CSV ファイル) を開く
$csvPath = "C:\Users\user1\DeskTop\Sample\sample2.csv" # データソースのパス
$dataconnection = $document.MailMerge.OpenDataSource($csvPath, $false, $true)

# 差し込み印刷の実行
$document.MailMerge.Execute()

# 結果を新しいドキュメントに保存
$savePath = "C:\Users\user1\DeskTop\Sample\output.docx" # 保存先のパス
$document.SaveAs($savePath)

# Word アプリケーションを閉じる
#$document.Close SaveChanges:=wdDoNotSaveChanges
$document.Close([ref]$false)
#[ref]$falseをしておかないと「定型書式」の保存ダイアログメッセージが表示されてしまう
$word.Quit([ref]$false)
# DisplayAlertsをFalseに設定(警告を非表示)
#$word.DisplayAlerts = $true

# COM オブジェクトを解放
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($document)
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($word)
Write-Host "差し込み印刷が完了しました。結果は $savePath に保存されました。"

0 件のコメント:

コメントを投稿

PowerShellからWordの差込印刷を実施

 PowerShellからWordの差込印刷を実施 経緯 PowerShellでシステムを作ったときに帳票を出力するためにWordの差し込み印刷を利用する。実際にはファイルパスについてはtempフォルダを作成し、テンプレートとなるWordファイルをコピーし、元データとなるCSVフ...