[RESUELTO]Ejecutar macro dentro de un archivo desde terminal
-
- Mensajes: 3
- Registrado: Mar Jun 10, 2014 8:36 pm
[RESUELTO]Ejecutar macro dentro de un archivo desde terminal
Quisiera saber si es posible ejecutar la macro dentro de un archivo o ejecutar una macro para varios archivos desde la terminal de linux sin tener que abrir el documento y ejecutar la macro.
Última edición por mauricio el Mié Jun 11, 2014 3:55 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
OpenOffice / Ubuntu 14.01
Re: Ejecutar macro dentro de un archivo desde terminal
No es posible ejecutar una macro dentro de un archivo desde la terminal, pero sí se puede ejecutar una macro guardada en MisMacros. Uso Windows y ejecuto la macro Main guardada en la biblioteca Standard en el modulo Module1 con
Si la macro abre un archivo con el código
puedo abrir el archivo MiArchivo.odt con
Código: Seleccionar todo
soffice “macro:///Standard.Module1.Main()”
Código: Seleccionar todo
Sub Main(Nombre as String)
NombreURL = convertToURL(Nombre)
oDoc = StarDesktop.loadComponentFromURL(NombreURL, "_blank", 0, Array())
End Sub
Código: Seleccionar todo
soffice “macro:///Standard.Module1.Main(c:\Users\fjcc\Desktop\MiArchivo.odt)”
Re: Ejecutar macro dentro de un archivo desde terminal
Si uas Linux, aprovecha su versatilidad, puedes llamar a OPenOffice como servicio y ejecutar lo que quieras... mira este ejemplo: https://forum.openoffice.org/es/forum/v ... =31&t=8872
Si nos cuentas que es lo que pretendes en la macro, y no es muy complejo, hacemos el ejemplo...
Saludos
Si nos cuentas que es lo que pretendes en la macro, y no es muy complejo, hacemos el ejemplo...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
-
- Mensajes: 3
- Registrado: Mar Jun 10, 2014 8:36 pm
Re: Ejecutar macro dentro de un archivo desde terminal
Muchas gracias.
Lo que pretendo hacer es sacar datos de varios archivos de varias hojas y la salida a csv, ese código ya lo tengo hecho si meto la macro en un archivo y lo ejecuto. La idea es meter muchos archivos en una carpeta y desde terminal hacer que la macro se ejecute en todos los archivos, lo bueno de esto es que todos los archivos tienen la misma estructura por lo cual me sirve la sugerencia de FJCC-ES con la macro de libreoffice.
Ahora usaré su idea y cambiaré las referencias de thisComponent a oDoc.
El código completo se los pongo mañana y les cuento como me fue.
Muchas gracias.
Lo que pretendo hacer es sacar datos de varios archivos de varias hojas y la salida a csv, ese código ya lo tengo hecho si meto la macro en un archivo y lo ejecuto. La idea es meter muchos archivos en una carpeta y desde terminal hacer que la macro se ejecute en todos los archivos, lo bueno de esto es que todos los archivos tienen la misma estructura por lo cual me sirve la sugerencia de FJCC-ES con la macro de libreoffice.
Ahora usaré su idea y cambiaré las referencias de thisComponent a oDoc.
Código: Seleccionar todo
Sub Main(Nombre as String)
NombreURL = convertToURL(Nombre)
oDoc = StarDesktop.loadComponentFromURL(NombreURL, "_blank", 0, Array())
End Sub
Muchas gracias.
OpenOffice / Ubuntu 14.01
-
- Mensajes: 3
- Registrado: Mar Jun 10, 2014 8:36 pm
Re: [RESUELTO]Ejecutar macro dentro de un archivo desde term
El código sería el siguiente
Abre el archivo, saca los datos los pasa a otra hoja de calculo que guarda como csv y ya. Es lo que necesitaba, ahora solo falta hacer el script en bash para que tome todos los de una carpeta y procesarlos. Disculpen si repito algunas variables, lo hice en partes.
Código: Seleccionar todo
REM ***** BASIC *****
Sub Main(Nombre as String)
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
NombreURL = convertToURL(Nombre)
oDoc = StarDesktop.loadComponentFromURL(NombreURL, "_blank", 0, Array())
Dim sRuta As String
Dim mArg()
Dim oNuevoDocumento As Object
RutaTemplate = "private:factory/scalc"
Dim sRutaURL As String
Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
Dim RutaOriginal As String
Dim RutaGuardado As String
Dim CarpetaGuardado As String
Dim RFC As String
Dim Nombre As String
mOpciones(0).Name = "FilterName"
mOpciones(0).Value = "Text - txt - csv (StarCalc)"
sRutaURL = oDoc.getURL()
RutaOriginal = ConvertFromUrl( sRutaURL )
CarpetaGuardado = DirectoryNameoutofPath(RutaOriginal, GetPathSeparator())
RFC = oDoc.getSheets.getByName("Hoja1").getCellRangeByName("A3").String
Nombre = oDoc.getSheets.getByName("Hoja1").getCellRangeByName("H3").String
RutaGuardado = ConvertToUrl ( CarpetaGuardado+"/"+RFC+".csv" )
oNuevoDocumento = StarDesktop.loadComponentFromURL( RutaTemplate, "_default", 0, mArg() )
oNuevoDocumento.Sheets.getByIndex(0).getCellRangeByName("A1").String = "RFC"
oNuevoDocumento.Sheets.getByIndex(0).getCellRangeByName("B1").String = "Nombre"
oNuevoDocumento.Sheets.getByIndex(0).getCellRangeByName("A2").String = RFC
oNuevoDocumento.Sheets.getByIndex(0).getCellRangeByName("B2").String = Nombre
oNuevoDocumento.storeAsURL( RutaGuardado , mOpciones() )
oNuevoDocumento.dispose
oDoc.dispose
End Sub
OpenOffice / Ubuntu 14.01