powershellでexcelシート操作時エラー
powershellで複数のexcelファイルを各々一つの既存excelファイルの各ワークシトに書き込む方法として下記のコードで実行するとワークシート名にファイル名と同じシート名がある場合「sheet1(2)」となって追加されます。結果自体問題ないのですが、powershellの方に次のメッセージが出ます。このメッセージは、無視していいのかあるいは出ないようにする対処方法があるのかお教えください。
発生したエラーメッセージ
OperationStopped:
Line |
7 | $Workbook.Sheets.Item($Worksheet.Index - 1).Name = $Everyexcel.Name.R …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| この名前は既に使用されています。別の名前を入力してください。
実行コード
$ExcelObject=New-Object -ComObject excel.application
$ExcelObject.visible=$false
$ExcelObject.DisplayAlerts=$false
#$ExcelFiles=Get-ChildItem -Path D:\test_data\data\*.xlsx
$ExcelFiles=Get-ChildItem -Path @("D:\test\test\book1.xlsx","D:\test\test\book2.xlsx")
$outputFile = "D:\test_data\AAE.xlsx"
$Workbook=$ExcelObject.Workbooks.Open($outputFile)
$Worksheet=$Workbook.Sheets.Item(1)
foreach($ExcelFile in $ExcelFiles){
$Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName)
$Everysheet=$Everyexcel.sheets.item(1)
$Everysheet.Copy($Worksheet)
$range = $Workbook.Sheets.Item($Worksheet.Index - 1).usedRange
$range.EntireColumn.AutoFit() | out-null
$Workbook.Sheets.Item($Worksheet.Index - 1).Name = $Everyexcel.Name.Replace(".xlsx", "")
$Everyexcel.Close()
}
$Workbook.SaveAs($outputFile)
$Workbook.Close($true)
$ExcelObject.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Worksheet) > $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Workbook) > $null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($ExcelObject) > $null
[gc]::Collect()
[GC]::WaitForPendingFinalizers()
よろしくお願いいたします。
お礼
ありがとうございます!