【发布时间】:2017-11-01 00:03:32
【问题描述】:
我在这方面已经有一段时间了,但似乎找不到任何能完全满足我要求的东西。我正在处理这篇文章:How to use PowerShell to copy several Excel worksheets and make a new one,但它并没有完全符合我的要求。我正在尝试从多个工作簿中复制所有工作表并将它们放在一个新工作簿中。理想情况下,我想从其中一个工作簿中获取文件名,并使用它来命名新目录中的新文件。
我找到了许多可以执行此操作的代码示例,但是我缺少一些关键功能并且不知道如何实现它们。这是我现在工作的一个例子:
$file1 = 'C:\Users\Desktop\TestFolder\PredictedAttritionReport.xlsx' # source's fullpath
$file2 = 'C:\Users\Desktop\TestFolder\AdvisorReport' # destination's fullpath
$xl = new-object -c excel.application
$xl.displayAlerts = $false # don't prompt the user
$wb2 = $xl.workbooks.open($file1, $null, $true) # open source, readonly
$wb1 = $xl.workbooks.open($file2) # open target
$sh1_wb1 = $wb1.sheets.item('Report') # second sheet in destination workbook
$sheetToCopy = $wb2.sheets.item('Report') # source sheet to copy
$sh1_wb1.Name = "DeleteMe$(get-date -Format hhmmss)" #Extremely unlikely to be a duplicate name
$sheetToCopy.copy($sh1_wb1) # copy source sheet to destination workbook
$sh1_wb1.Delete()
$wb2.close($false) # close source workbook w/o saving
$wb1.close($true) # close and save destination workbook
$xl.quit()
spps -n excel
我遇到的问题是我需要它来工作,这样我就不必输入实际的文件名,因为这些名称在每次创建时都可能不同,并且可能有 3 或 4 个文件有更多而不是一个工作表,此示例仅使用两个命名文件。此外,我希望能够复制文件中的所有工作表,而不仅仅是一个命名的工作表,在本例中为“报告”。最后一部分是将其保存为新的 Excel 文件,而不是覆盖现有的目标文件,但我想我可以弄清楚这部分。
【问题讨论】:
标签: excel powershell