【发布时间】:2019-05-29 12:51:20
【问题描述】:
我正在尝试将多个 Excel 工作簿合并到一个工作簿中,同时将工作表命名为复制的工作簿的文件名。
我尝试在 for 循环内外移动 $Worksheet.Name。它仍然只为新工作簿中的空工作表命名 - 将其命名为最后复制的文件。
$ExcelObject=New-Object -ComObject excel.application
$ExcelObject.visible=$true
$ExcelFiles=Get-ChildItem -Path C:\Users\u1\Documents\Testing
$Workbook=$ExcelObject.Workbooks.add()
$Worksheet=$Workbook.Sheets.Item("Sheet1")
foreach($ExcelFile in $ExcelFiles){
$Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName)
$Everysheet=$Everyexcel.sheets.item(1)
$Everysheet.Copy($Worksheet)
$Worksheet.Name = [io.path]::GetFileNameWithoutExtension($ExcelFile)
$Everyexcel.Close()
}
$Workbook.SaveAs("C:\Users\u1\Documents\Testing\New\merged.xlsx")
$ExcelObject.Quit()
新工作簿已创建 (merged.xlsx),但所有工作表都命名为 Sheet1(...),除了一个名为目录中最后一个文件的空工作表。我也收到以下错误。 Excel 无法访问“新建”。该文档可以是只读的或加密的。 您不能在空值表达式上调用方法。
【问题讨论】:
标签: excel powershell