PowerShell重命名Excel工作表

时间:2016-05-29 08:50:02

标签: excel powershell

我在一个文件夹上有多个excel文件(xls)。每个工作簿只包含一个Excel工作表。我需要将每个Excel工作表名称重命名为“Result”。我怎么能通过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()
}

1 个答案:

答案 0 :(得分:2)

您不能在工作表上使用save(),而是在工作簿上使用$workbook.Save() $workbook.Close() $xldoc.Quit() 。使用

{{1}}

并且不会提示。