Página 1 de 1

Ejecución Macros

Publicado: Lun Jul 27, 2020 1:44 pm
por david.diazdegeras
Buenos días,

Estoy tratando de ejecutar una macro de una hoja de cálculo desde fuera con un fichero .bat o .vbs y no soy capaz, se ejecuta todo menos la llamada a la macro. He probado a ejecutar la macro desde dentro del documento y funciona perfectamente.

Adjunto a continuación el código del .vbs, el cual lo único que hace es crear la hoja de cálculo, llamar a la macro y cerrar la hoja de cálculo:

Código: Seleccionar todo

'load openoffice
Set OOServiceManager = CreateObject("com.sun.star.ServiceManager")
Set OODispatcher = OOServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper")
Set OODesktop = OOServiceManager.CreateInstance("com.sun.star.frame.Desktop")

Dim args()

'load file
Set OOSpreadSheet = OODesktop.loadComponentFromURL("file:///C:/TransfDestinatarios/Test.ods", "_default", 0, args)

'run particular macro
'call OODispatcher.ExecuteDispatch(OOSpreadSheet.CurrentController.Frame, "macro:///standard.module1.import_csv", "", 0, args)

'close document
'OOSpreadSheet.close(true)
PD: Por si fuera útil, la macro realiza las siguientes funciones: Abrir un csv, copiar el contenido, pegarlo en la hoja y guadar el documento como .xls.

Muchas gracias por vuestra colaboración.
Un saludo

Re: Ejecución Macros

Publicado: Lun Jul 27, 2020 5:18 pm
por PepeOooSevilla
Hola.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la Guía de supervivencia.
Y si le asignas la macro "import_csv" al suceso Abrir documento del menú Herramientas > Personalizar... > pestaña Sucesos del archivo "Test.ods" se ejecutaría automáticamente al abrir el archivo ODS.
El script podría quedaría así:

Código: Seleccionar todo

'load openoffice
Set OOServiceManager = CreateObject("com.sun.star.ServiceManager")
Set OODispatcher = OOServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper")
Set OODesktop = OOServiceManager.CreateInstance("com.sun.star.frame.Desktop")
Dim args()
'load file
Set OOSpreadSheet = OODesktop.loadComponentFromURL("file:///C:/TransfDestinatarios/Test.ods", "_default", 0, args)
'close document
OOSpreadSheet.close(true)
Haz pruebas.
Saludos cordiales.

Re: Ejecución Macros

Publicado: Lun Jul 27, 2020 6:01 pm
por david.diazdegeras
PepeOooSevilla escribió:Hola.
Te damos la bienvenida al Foro y, por favor, no dejes de leer la Guía de supervivencia.
Y si le asignas la macro "import_csv" al suceso Abrir documento del menú Herramientas > Personalizar... > pestaña Sucesos del archivo "Test.ods" se ejecutaría automáticamente al abrir el archivo ODS.
El script podría quedaría así:

Código: Seleccionar todo

'load openoffice
Set OOServiceManager = CreateObject("com.sun.star.ServiceManager")
Set OODispatcher = OOServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper")
Set OODesktop = OOServiceManager.CreateInstance("com.sun.star.frame.Desktop")
Dim args()
'load file
Set OOSpreadSheet = OODesktop.loadComponentFromURL("file:///C:/TransfDestinatarios/Test.ods", "_default", 0, args)
'close document
OOSpreadSheet.close(true)
Haz pruebas.
Saludos cordiales.
Buenas tardes,

Justo lo que comentas es la segunda prueba que hice y tampoco se genera, parece que lo ignora.
Si el script está correcto, se me ocurre que el problema podría deberse a alguna restricción en la ejecución de la macro derivada de las políticas de seguridad del servidor. ¿Hay alguna política al respecto que pudiera estar bloqueando la ejecución?.

Muchas gracias por tu ayuda,
Un saludo