csvファイルのデータを雛形となるExcelに差し込んで保存するPowerShellです。
これは、アカウント通知書などの雛形をExcelで作っておき、cvsに保存されているユーザー情報を差し込んで個人別にアカウント通知書を作成する場合などに利用できます。

# 作業フォルダー
$Work = “C:\Work\”

# Excel(ひな形)
$xlsFile = “Template.xltx”
$xlsPath = $Work + $xlsFile

# Applicationオブジェクト作成
$xls = New-Object -ComObject Excel.Application
# アラートの非表示
$xls.DisplayAlerts=$false
# Excel非表示
$xls.visible = $false

# ブックオープン
$books = $xls.Workbooks.Open($xlsPath)
$sheet = $books.Worksheets.Item(1)

# csvファイル
$CsvFile = “Data.csv”
$CsvPath = $Work + $CsvFile

Import-Csv $CsvPath | foreach {
$User = $_.User
$Pass = $_.Pass

# Excelへ書き込み
$sheet.cells.item(3,4) = $User
$sheet.cells.item(5,4) = $Pass

# Excelの保存
$xlsFile = $Work + $User + “.xlsx”
If(Test-Path $xlsFile)   {
# 同じファイルが存在している場合
Remove-Item $xlsFile
$xls.ActiveWorkbook.SaveAs($xlsFile)
}
Else
{
# ファイルが存在していない場合
$xls.ActiveWorkbook.SaveAs($xlsFile)
}

Remove-Variable User,Pass,xlsFile

}

# ブッククローズ
$books.Close();
Remove-Variable CsvPath,CsvFile
Remove-Variable books,sheet

# Excel 終了
$xls.Quit()
Remove-Variable xls
[GC]::Collect()

広告