使用PowerShell脚本修改CSV文件单元格 解决无法取消保存覆盖弹窗问题
问题原因
- 配置时机错误:
$Excelobject.DisplayAlerts用于控制Excel操作全流程的弹窗提示,需要在触发覆盖弹窗的SaveAs操作执行前配置。你当前的配置语句放在了SaveAs、工作簿关闭之后,没有覆盖到弹窗触发的时间节点,自然不生效。 - 赋值类型错误:
DisplayAlerts接收布尔类型参数,你赋值的是字符串'False',正确取值应为PowerShell内置布尔变量$false。
修正后完整脚本
$Excelobject = New-Object -ComObject Excel.Application $Excelobject.Visible = $False # 提前关闭所有操作弹窗,使用正确的布尔类型值 $Excelobject.DisplayAlerts = $false $workbook = $Excelobject.Workbooks.Open("C:\Users\Siddhartha.S.Das2\OneDrive - Shell\Desktop\Workspacesize.csv") $worksheet = $workbook.Worksheets.Item(1) $worksheet.Cells.Item(1,2) = "TEST" # 若不需要修改文件存储格式,可直接用Save()方法,完全不会触发覆盖提示 # $workbook.Save() $workbook.SaveAs("C:\Users\Siddhartha.S.Das2\OneDrive - Shell\Desktop\Workspacesize.csv") $workbook.Close() $Excelobject.Quit() # 释放COM对象,避免后台残留Excel进程占用文件 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excelobject) | Out-Null Remove-Variable Excelobject
补充说明
如果确认是覆盖现有同路径文件,也可以在SaveAs方法中传入覆盖参数,双重保障不会触发弹窗。
内容的提问来源于stack exchange,提问作者Siddhartha Das
相关产品推荐
相关产品推荐

