コンテンツへスキップ

Excelシートコピー

他のブックのシートをコピーする。

$file1 = 'E:\my-document\エクセル\template.xlsx' # source's fullpath
$file2 = 'E:\my-document\エクセル\Test05.xlsx' # destination's fullpath
$xl = new-object -c excel.application
$xl.displayAlerts = $false # don't prompt the user
$xl.visible = $true
$workBook1 = $xl.workbooks.open($file1, $null, $true) # open source, readonly
#$workBook2 = $xl.workbooks.open($file2) # open target

# 新しいbookを作成
$workBook2 = $xl.Workbooks.Add() # index1に追加される

# コピーするシートをセット
$sheetToCopy = $workBook1.sheets.item('テンプレートシート') # source sheet to copy

#シート名アレイ
$sheetLists = ("サーバ1","サーバ2","サーバ3")

$i = 1
foreach($sheetName in $sheetLists) {
    $sh1_wb2 = $workBook2.sheets.item($i)
    $sheetToCopy.copy($sh1_wb2)
    $workBook2.WorkSheets.item("テンプレートシート").name = [string]$sheetName
    $i++
}

# ブック作成時にデフォルトで作成されるシートを削除
$workBook2.WorkSheets.item("Sheet1").delete()
$workBook2.WorkSheets.item("Sheet2").delete()
$workBook2.WorkSheets.item("Sheet3").delete()

$workBook1.close($false) # 保存なし
$workBook2.SaveAs($file2)
#$workBook2.close($true) # 保存あり
$xl.quit()
$xl = $null
[gc]::Collect()