Visual Basic para Aplicaciones - Problemas con script Excel2016

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas con script Excel2016

Publicado por Aitor (2 intervenciones) el 10/04/2018 08:50:14
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 38
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas con script Excel2016

Publicado por dario (21 intervenciones) el 10/04/2018 14:54:03
Por lo que veo te dice que no encuentra "saveas", probá de tipear en esa línea workbook, pone el punto y caundo te despliega la lista, empezá a tipear save y fijate que funciones te lista, si saveas existe, dalte enter, pone un espacio o un parentesistesis y fijate que estructura te indica y si tenes algo mal ahí, pero por lo que muestra el error aparentemente no existe el saveas.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas con script Excel2016

Publicado por Aitor (2 intervenciones) el 18/04/2018 10:50:06
Hola Dario, muchas gracias por la respuesta. La solucion que me das no la puedo aplicar, ya que es un archio .ps1 editado en un notepad.
El tema que me mosquea, es que anteriormente funcionaba a la perfeccion en el servidor antiguo, co la unica diferencia de la version del excel, que ahora es 2016, cuando antes era 2010. Puede ser ese el problema?
O peudo quizas influir el hecho de que el excel no este activado?

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar