[RESUELTO] unificación de documentos

Discute sobre la aplicación de hojas de cálculo
Responder
paucius
Mensajes: 3
Registrado: Jue Feb 02, 2017 1:22 pm

[RESUELTO] unificación de documentos

Mensaje por paucius »

Hola,

Somos una asociación de grupos scout a nivel provincial (hay diferentes grupos
scout y una oficina que coordina).

Desde la oficina tenemos compartido con cada grupo scout un documento en el
que meten datos de las facturas que pagan (por columnas fecha, cif del
proveedor, concepto, etc).

Los documentos tienen las mismas columnas y los grupos la van rellenando.
Nosotros podemos acceder a todos los documentos pero ellos solo al de su
grupo.

La idea es poder generar un documento nuevo en el que cuando, lo abrimos o
queramos, se vuelque en él el contenido de los diferentes documentos de modo que
podamos listar todas las facturas y aplicar filtros por fecha o por proveedor, etc.

Podríais ayudarme?

Me he estado informando de las macros y tal en el foro. Nunca he usado una
ni se usar el lenguaje de las macro. He leído algún hilo del foro en el que
se hablan cosas similares a lo que yo quiero
(http://ooo-forums.apache.org/es/forum/v ... 21&t=11598) pero
cuando ejecuto la macro, se abre un documento nuevo en blanco y no vuelca
los datos.

Muchas gracias!!
Última edición por mauricio el Sab Feb 11, 2017 7:52 pm, editado 2 veces en total.
Razón: Marcar resuelto correctamente
OpenOffice 4.1.3 en Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: unificación de documentos

Mensaje por fornelasa »

Para intentar resolver este tema y facilitarlo :
1) Todos los archivos deben estar en la misma carpeta, ¿es así?.
2) ¿Deseas copiar solo la primer hoja de cada archivo o todas las hojas o como?
3) ¿Más o menos que rango ocupan tus datos, se puede saber?

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
paucius
Mensajes: 3
Registrado: Jue Feb 02, 2017 1:22 pm

Re: unificación de documentos

Mensaje por paucius »

Hola! Gracias por atenderme!

1) Si, los archivos están en una misma carpeta.

2) Tras meditarlo, solo la primera hoja. La idea es que este 2017 los grupos rellenen la hoja1 y al acabar el año esta hoja se renombre a "2017" y se pase a la derecha, creando una nueva "hoja1" que estará la primera y se rellenará con el año 2018.

3) El rango dependerá de la actividad económica de cada grupo. Unos tendrán más facturas y otro menos. Un rango bastante amplio puede ser: A2:I100 De todos modos, me gustaría poder modificar este rango si es fácil en el código de la macro (así como tendré que modificar la ruta de la carpeta).

Muchas gracias Federico!
OpenOffice 4.1.3 en Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: unificación de documentos

Mensaje por fornelasa »

En base a lo que dices aquí un primer intento:
Prueba esta macro que almacenaremos pulsando Alt-F11 <> MisMacros <> Standar <> Module1 <> Editar
Prueba la macro estando en un libro en blanco

Código: Seleccionar todo

Sub PasarDatos
Dim args1(1) as new com.sun.star.beans.PropertyValue
Dim NoArgs()
		Idocument = ThisComponent.CurrentController.Frame
	  Idispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    args1(0).Name = "By"
   args1(0).Value = 1
    args1(1).Name = "Sel"
   args1(1).Value = false
          aInicio = thiscomponent.currentcontroller
          cInicio = aInicio.activesheet.getcellrangebyname("A2")
          finicio = aInicio.Frame
                    aInicio.select(cInicio)
			  url = "C:\TuCarpeta\TuCarpeta\Carpeta"
             oDoc = ThisComponent
           oSheet = oDoc.Sheets(0)
              url = ConvertToURL(url)
            oCell = oSheet.getCellRangeByName("A1")
              url = url & "/"
         elNombre = Dir$(url & "*.ods")
Do While elNombre <> ""
  If elNombre <> "." And elNombre <> ".." then
  StarDesktop.loadComponentFromURL(url & elNombre, "_blank", 0, NoArgs())
           anuevo = thiscomponent.currentcontroller
             hoja = anuevo.activesheet
   anuevo.select(hoja.getcellrangebyname("A2:I400"))
         document = ThisComponent.CurrentController.Frame
       dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
   thiscomponent.close(false)
    args1(0).Name = "Flags"
   args1(0).Value = "SVD"
    args1(1).Name = "MoveMode"
   args1(1).Value = 4
   dispatcher.executeDispatch(finicio, ".uno:InsertContents", "", 0, args1())
  End If
   Idispatcher.executeDispatch(Idocument, ".uno:GoDownToEndOfData", "", 0, args1())
   Idispatcher.executeDispatch(Idocument, ".uno:GoDown", "", 0, args1())
         elNombre = Dir$
Loop
   MsgBox "Proceso Finalizado"
End
End Sub
Solo hay que cambiar la ruta del directorio y también debe haber archivos de Calc con extension .ods en la carpeta indicada
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
paucius
Mensajes: 3
Registrado: Jue Feb 02, 2017 1:22 pm

Re: unificación de documentos

Mensaje por paucius »

Federico eres el amo!! Funciona genial!!

Incluso añadí una columna más que necesitaba y me reconoce el rango.

Lo único es que para actualizar datos y no me duplique entradas, el documento global debe estar en otra carpeta (lógicamente).

Muchísimas gracias!!!!

Si algún día vienes por Valencia tienes casa y guía turístico.

De verdad muchas gracias por dedicarme tu tiempo y conocimientos.

Un saludo!!!
OpenOffice 4.1.3 en Windows 10
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: [RESUELTO] unificación de documentos

Mensaje por fornelasa »

:mrgreen: :super:
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder