首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Powershell更改工作表名称(Excel)

通过Powershell更改工作表名称(Excel)
EN

Stack Overflow用户
提问于 2022-08-18 14:54:27
回答 1查看 38关注 0票数 0

我面临一个挑战,我需要每天在XLSX文档中将现有的工作表名更改为新的工作表名,而不是保存它。

我的剧本是这样的:

代码语言:javascript
复制
$xlspath = "C:\Users\roger\Test - Test\Daily_Files\Testfile.xlsx"
$xldoc = new-object -comobject Excel.application
$xldoc.DisplayAlerts = $false
$xldoc.Visible =$false
$workbook = $xldoc.Workbooks.Open($xlspath)
$worksheet = $workbook.worksheets.item(1)
$worksheet.name = "Headcount"
$workbook.Save = ($xlspath)
$workbook.Close()
$xldoc.Quit()

我总是会收到这个错误--即使这样,文件也会保存,并且名称已经更改:

C:\CommonUserData\Roger\Test\Test.ps1:8 char:1 + $workbook.Save = "C:\Users\roger\Test - Test\Daily_Files\ .+~+ CategoryInfo : OperationStopped:(:) [],COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException‘

有人知道如何解决这个问题吗?还是让这个脚本变得很简单?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-19 11:43:35

您甚至不需要.Save().SaveAs()方法。只需使用参数$true关闭工作簿

代码语言:javascript
复制
$xlspath = "C:\Users\roger\Test - Test\Daily_Files\Testfile.xlsx"
$xldoc = New-Object -ComObject Excel.application
$xldoc.DisplayAlerts = $false
$xldoc.Visible =$false
$workbook = $xldoc.Workbooks.Open($xlspath)
$worksheet = $workbook.worksheets.item(1)
$worksheet.Name = "Headcount"
$workbook.Close($true)   # save the updated workbook
$xldoc.Quit()

# Important: remove references to the used COM objects when finished so they don't keep lingering in memory
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
$null = [System.Runtime.Interopservices.Marshal]::ReleaseComObject($xldoc)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73405229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档