【问题标题】:PowerShell to Rename Excel SheetPowerShell 重命名 Excel 工作表
【发布时间】:2016-05-29 08:50:02
【问题描述】:

我在一个文件夹中有多个 excel 文件 (xls)。每个工作簿仅包含一个 Excel 工作表。我需要将每个 excel 工作表名称重命名为“结果”。我怎么能通过 PowerShell 做到这一点?我可以通过以下命令从特定工作簿中获取工作表名称。但是我如何编写一个可以读取多个工作簿的 PowerShell 脚本,并将每个 excel 工作表重命名为“结果”。

$xldoc = new-object -comobject Excel.application
$workbook = $xldoc.Workbooks.Open("sample.xls")
$worksheet = $workbook.worksheets.item(1)
$worksheet.name

这里是可以重命名excel工作表标签的脚本,但它会提示我确认是否保存文件。如何修改代码使其自动保存而无需提示消息框?

$xlspath = "D:\Testing\RenameSheet\Testing2.xls"
$xldoc = new-object -comobject Excel.application
$workbook = $xldoc.Workbooks.Open($xlspath )
$worksheet = $workbook.worksheets.item(1)
$worksheet.name = "Result"
$worksheet.SaveAS = ($xlspath)
$worksheet.Close()
$xldoc.Quit()

我能够在这里得到结果,这个函数可以解决问题。请关闭这个话题。谢谢

Function RenameTab ($ExcelFileName, $OutLoc)
{
$excelFile = "D:\Testing\RenameSheetAdvance\" + $excelFileName + ".xls"
$xldoc =  New-Object -ComObject "Excel.Application"
$xldoc.Visible = $false
$xldoc.DisplayAlerts = $false

$workbook = $xldoc.Workbooks.Open($excelFile)
foreach ($worksheet in $workbook.Worksheets)
{
    $n = $ExcelFileName ##+ "_" + $worksheet.Name
    $worksheet = $workbook.worksheets.item(1)
    $worksheet.name = "Sheet1"
    $workbook.SaveAs($OutLoc + $n + ".xls")
    $workbook.Close()
}
$xldoc.Quit()
}

【问题讨论】:

  • 当您尝试$worksheet.name = "Result" 时会发生什么?那将是第一步。第二步是保存并关闭文件。那你有研究过 PowerShell 是如何循环的吗?

标签: excel powershell


【解决方案1】:

您不能在工作表上使用save(),而是在工作簿上使用。使用

$workbook.Save()
$workbook.Close()
$xldoc.Quit()

它不会提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-29
    • 2012-04-08
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多