Powershell Excel SaveAs requiere confirmación.
Utilizo el siguiente script para convertir un montón de archivos xls a 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("."))
"Convirtiendo $path"
$workbook = $excel.workbooks.open($_.fullname)
$path += ".xlsx"
$workbook.saveas($path, $xlFixedFormat)
$workbook.close()
}
$excel.Quit()
$excel = $null
Solía funcionar perfectamente ejecutándolo en una máquina virtual.
Desafortunadamente, al cambiar la ruta de la carpeta, me di cuenta de que aparecen ventanas emergentes para confirmar la guarda que antes no salían y el script se queda atascado en eso.
¿Hay alguna corrección simple que pueda evitar ese error?
“scriptError”: {
“localizedName”: “Error”,
“value”: “No se puede obtener la propiedad SaveAs de la clase Workbook\r\nEn C:\Users\~
“variableName”: “ScriptError”
}
davy.ai
El problema parece estar relacionado con las ventanas emergentes que aparecen al guardar el libro. Para prevenir este error, puedes agregar la siguiente línea después de abrir el libro:
$excel.DisplayAlerts = $false
Esto desactivará cualquier alerta emergente que pueda aparecer mientras se guarda el libro. Además, es una buena práctica volver a habilitar las alertas después de que el guardado esté completo, por lo que puedes agregar la siguiente línea después de que el libro haya sido guardado:
$excel.DisplayAlerts = $true
Esto asegura que las alertas futuras no se pierdan. El código actualizado debe verse así:
Esto debería evitar que las ventanas emergentes causen errores en el script y permitir que se ejecute sin problemas.