[RESUELTO] Copiar y Pegar un Rango variable

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] Copiar y Pegar un Rango variable

Notapor EdgarHen » Mié Feb 22, 2017 8:28 am

Hola, he utilizado por un tiempo macros en Vb, no siendo muy experto he logrado sacar lo que requiero pero ahora tengo la necesidad de hacer una macro "Sencilla" en Openoffice, la verdad he leido partes del libro pero quizá al no tener familiaridad con la programación en OO no he logrado avanzar mucho, agradezco su ayuda.
La necesidad que tengo es tomar un rango (3 o 4 celdas con formulas) y bajarlas hasta una fila "x" (La cantidad la capturé con una variable a una celda con un contar y va bien). Luego hacer lo mismo en 4 hojas más. (Claro, solo necesito ayuda con una)
Voy a dejar el código al que he llegado y tal vez sea mas fácil para alguien identificar cual es el error para copiar el rango. Muchas gracias!!

Código: Seleccionar todo   Expandir vistaContraer vista
Sub Macro_prueba()
Dim oDoc As Object
Dim oHoja As Object
Dim oCelda as Object
Dim oCounter as Integer
Dim OrangoOrig as Object
Dim OrangoDest as Object

   oDoc = ThisComponent
   'Aca estoy capturando la variable con la que quiero determinar hasta que fila pegar la formula
   oHoja = oDoc.getSheets.getByName("Libro 1")
   oCelda = oHoja.getCellrangebyname("a1")
   ocounter = ocelda.value

oRangoOrig = oHoja.getCellRangeByName( "b9:c9" )
oRangoDest = oHoja.getCellRangeByName( "b10:c" & oCounter)'Aca incluyo la variable para pegar hasta C"Valor Counter")

oHoja.copyRange( oRangoDest.getCellAddress(), oRangoOrig.getRangeAddress() )
'es esta linea me sale ERROR "Propiedad o metodo no encontrado getCellAddress" aca no sé que debo colocar.
   
End Sub
Última edición por mauricio el Lun Mar 27, 2017 10:41 pm, editado 1 vez en total
Razón: Marcar resuelto correctamente
OpenOffice 4.1.3 / Windows 64 bits
EdgarHen
 
Mensajes: 3
Registrado: Mié Feb 22, 2017 7:57 am

Re: Copiar y Pegar un Rango con variable que determine su ta

Notapor FJCC-ES » Mié Feb 22, 2017 5:43 pm

Un rango de celdas no tiene la propiedad CellAddress. El primer parámetro de copyRange() tiene que ser el CellAddress de una celda.
Código: Seleccionar todo   Expandir vistaContraer vista
oDoc = ThisComponent
'Aca estoy capturando la variable con la que quiero determinar hasta que fila pegar la formula
oHoja = oDoc.getSheets.getByName("Libro 1")
oCelda = oHoja.getCellrangebyname("a1")
ocounter = ocelda.value

oRangoOrig = oHoja.getCellRangeByName( "b9:c9" )
'oRangoDest = oHoja.getCellRangeByName( "b10:c" & oCounter)'Aca incluyo la variable para pegar hasta C"Valor Counter")
oCeldaDest = oHoja.getCellRangeByName( "b10")
'oHoja.copyRange( oRangoDest.getCellAddress(), oRangoOrig.getRangeAddress() )
oHoja.copyRange( oCeldaDest.getCellAddress(), oRangoOrig.getRangeAddress() )
FJCC-ES
 
Mensajes: 676
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Copiar y Pegar un Rango con variable que determine su ta

Notapor mauricio » Mié Feb 22, 2017 6:03 pm

Todo esta bien documentado por aca: https://wiki.openoffice.org/wiki/ES/Man ... ndo_rangos

pero... solo leyendo algunas partes, avanzaras lento y con errores...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5787
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Copiar y Pegar un Rango con variable que determine su ta

Notapor EdgarHen » Jue Feb 23, 2017 3:06 am

Muchas gracias Mauricio por la aclaración, le agradezco si me puede indicar entonces que código debo utilizar para la necesidad que tengo, porque en el código que me ha corregido estaría pegando en una celda pero no podría definir hasta donde quiero bajar la fórmula, ejemplo, tengo una formula en la celda "A9" y quiero replicarla dependiendo de la cantidad de registros que tenga, en un caso podrá ser pegarla en el rango "A10:A50" pero en otro caso podrá ser en el rango "A10:A2345" o cualquier otro valor (el que tengo en el counter).
Claro su libro se ve espectacular y sacaré luego el tiempo para leerlo completo pero en el momento necesito solucionar algo y no podría esperar a leerlo completo. Mil gracias, saludos.
OpenOffice 4.1.3 / Windows 64 bits
EdgarHen
 
Mensajes: 3
Registrado: Mié Feb 22, 2017 7:57 am

Re: Copiar y Pegar un Rango con variable que determine su ta

Notapor FJCC-ES » Jue Feb 23, 2017 4:40 am

Una solución no muy elegante:
Código: Seleccionar todo   Expandir vistaContraer vista
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oDoc = ThisComponent

oHoja = oDoc.getSheets.getByName("Libro 1")
oCelda = oHoja.getCellrangebyname("a1")
ocounter = ocelda.value

oRangoOrig = oHoja.getCellRangeByName( "b9:c9" )
oDoc.CurrentController.select(oRangoOrig)

dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

oRangoDest = oHoja.getCellRangeByName( "b10:c" & oCounter)  'Aca incluyo la variable para pegar hasta C"Valor Counter")
oDoc.CurrentController.select(oRangoDest)

dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
FJCC-ES
 
Mensajes: 676
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Copiar y Pegar un Rango con variable que determine su ta

Notapor EdgarHen » Lun Mar 06, 2017 1:47 am

Mil gracias FJCC, es justo lo que necesitaba!
OpenOffice 4.1.3 / Windows 64 bits
EdgarHen
 
Mensajes: 3
Registrado: Mié Feb 22, 2017 7:57 am

Re: [RESUELTO] Copiar y Pegar un Rango variable

Notapor mauricio » Lun Mar 27, 2017 10:41 pm

Por favor, si el tema lo das como RESUELTO, es importante marcarlo como tal, ahora lo hago por ti, procura hacerlo tu en un futuro.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 6.1.5 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5787
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados