我使用下面的脚本来转换一堆xls文件到xlsx。
$folderpath = %tempPath%
$filetype ="*xls"
Add-Type -AssemblyName Microsoft.Office.Interop.Excel
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault
write-host $xlFixedFormat
$excel = New-Object -ComObject excel.application
$excel.visible = $true
Get-ChildItem -Path $folderpath -Include $filetype -recurse |
ForEach-Object `
{
$path = ($_.fullname).substring(0, ($_.FullName).lastindexOf("."))
"Converting $path"
$workbook = $excel.workbooks.open($_.fullname)
$path += ".xlsx"
$workbook.saveas($path, $xlFixedFormat)
$workbook.close()
}
$excel.Quit()
$excel = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
字符串
它曾经完美地运行在VM上。不幸的是,随着更改文件夹路径,我意识到有弹出窗口来确认保存之前没有出现,脚本卡住了。任何简单的更正,可以防止该错误?
"scriptError": {
"localizedName": "Error",
"value": "Unable to get the SaveAs property of the Workbook class\r\nAt C:\\Users\\~
"variableName": "ScriptError"
}
型
3条答案
按热度按时间wfypjpf41#
下面是一个使用PowerShell保存Excel文件时如何设置路径的示例。我使用Get-Location小程序、Get-Date小程序和文件名的组合来设置路径,文件名存储在字符串变量中,供保存脚本时使用。
字符串
hmae6n7t2#
try $workbook.SaveCopyAs($path)
当我升级到Office 2016时,我在Azure DevOps管道中的Powershell脚本中出现了相同的错误消息。
升级后,它停止工作,但脚本仍然在同一升级的构建机器上手动工作正常。
1.最后我试着保存副本。
1.我还在代码中添加了以下行
$excel.visible = $false
$excel.DisplayAlerts=$false
1.我还创建了以下文件夹:
syqv5f0l3#
你应该使用
$workbook.Close($false)
。