none
Problemas con script Excel2016 RRS feed

  • Pregunta

  • Buenos dias,

    Me he encontrado un problema con un script, el cual espero que me podais ayudar a entender cual es su causa.

    El tema es que en un servidor antiguo, con Excel 2010, cree un script para realizar la conversion entre xls y xlsx. El codigo es el siguiente:

    Add-Type -AssemblyName Microsoft.Office.Interop.Excel
    $xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlOpenXMLWorkbook
    write-host $xlFixedFormat
    $excel = New-Object -ComObject excel.application
    $excel.visible = $true
    $folderpath = "C:\Users\Public\Documents\Stock In Central"
    $filetype ="*xls"
    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()
    $excel.Close

    En el servidor antiguo me funcionaba perfectamente. PEro al realziar una migracion a un nuevo servidor,el cual tiene excel 2016, me da el siguiente error:

    Error en la invocación del método porque [System.__ComObject] no contiene ningún método llamado 'saveas'.
    En línea: 17 Carácter: 2
    +     $workbook.saveas($path, $xlFixedFormat)
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (saveas:String) [], RuntimeException
        + FullyQualifiedErrorId : MethodNotFound
     
    Error en la invocación del método porque [System.__ComObject] no contiene ningún método llamado 'close'.
    En línea: 18 Carácter: 2
    +     $workbook.close()
    +     ~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
        + FullyQualifiedErrorId : MethodNotFound
     
    Excepción al llamar a "Quit" con los argumentos "0": "Excepción de HRESULT: 0x800AC472"
    En línea: 22 Carácter: 1
    + $excel.Quit()
    + ~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : COMException

    A que se puede deber este error? Peude ser que sea derivado a que el office no esta activado? Alguna funcion que ya no exista en al nueva version?

    Cualquier pista sera bienvenida,

    Muchas gracias!

    lunes, 9 de abril de 2018 11:48

Todas las respuestas

  • Mmmm no creo que sea porque Office no está activado, aunque sí deberías activarlo y tratar por ese lado. Por otra parte, ¿la ruta que escribiste sí existe?
    lunes, 16 de diciembre de 2019 17:50