Ejecución Macros

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
david.diazdegeras
Mensajes: 2
Registrado: Lun Jul 27, 2020 1:34 pm

Ejecución Macros

Mensaje 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
Última edición por PepeOooSevilla el Lun Jul 27, 2020 3:36 pm, editado 1 vez en total.
Razón: Etiquetas [code]
Open Office 4.6 y Windows 10
Avatar de Usuario
PepeOooSevilla
Mensajes: 1480
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: Ejecución Macros

Mensaje 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.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
david.diazdegeras
Mensajes: 2
Registrado: Lun Jul 27, 2020 1:34 pm

Re: Ejecución Macros

Mensaje 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
Open Office 4.6 y Windows 10
Responder