Página 1 de 1
[RESUELTO]Copiando rangos con formulas
Publicado: Lun Jul 12, 2010 10:39 am
por pedrito76
Hola a todos de nuevo,
Dentro de los apuntes de mauricio encontre lo que buscaba que es copiar un rango en otra celda, una de esta tiene formula, pero cuando ejecuto la macro no me sale, os pongo lo que hago y nada
Sub CopiarRangos2()
Dim oHojaActiva As Object
Dim oOrigen As Object
Dim oDestino As Object
oHojaActiva = ThisComponent.getCurrentController().getActiveSheet()
oOrigen = ThisComponent.getCurrentSelection()
oDestino = oHojaActiva.getCellByPosition( oOrigen.getRangeAddress().EndColumn + 0, oOrigen.getRangeAddress().EndRow - 7)
oHojaActiva.copyRange( oDestino.getCellAddress(), oOrigen.getRangeAddress() )
ThisComponent.getCurrentController().select( oOrigen )
End Sub
Lo que me hace es copiar la formula pero no me copia el resultado de la formula, como puedo arreglarlo?
Espero me puedan ayudar.
Gracias de nuevo
Re: Copiando rangos con formulas
Publicado: Lun Jul 12, 2010 5:45 pm
por mauricio
Hola...
Tienes que seguir leyendo compañero, los siguiente métodos los trato en el libro, dependiendo del tipo de datos alguno de ellos te servirá...
Código: Seleccionar todo
Option Explicit
Sub Main
Dim oDoc As Object
Dim oHoja As Object
Dim oOrigen As Object
Dim oDestino As Object
'Este documento
oDoc = ThisComponent
'La hoja activa
oHoja = oDoc.getCurrentController.getActiveSheet
'El rango origen
oOrigen = oHoja.getCellRangeByName( "A1:C10" )
'La celda destino A15
oDestino = oHoja.getCellByPosition( 0,14 )
'Copiamos el rango
oHoja.copyRange( oDestino.getCellAddress, oOrigen.getRangeAddress )
'IMPORTANTE: Todos estos métodos requieren que el origen y el destino tengan
'EXACTAMENTE el mismo tamaño
oDestino = oHoja.getCellRangeByName( "E1:G10" )
oDestino.setData( oOrigen.getData )
oDestino = oHoja.getCellRangeByName( "E15:G24" )
oDestino.setDataArray( oOrigen.getDataArray )
oDestino = oHoja.getCellRangeByName( "I1:K10" )
oDestino.setFormulaArray( oOrigen.getFormulaArray )
End Sub
Por favor, si esto responde tu pregunta,
edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
Re: Copiando rangos con formulas
Publicado: Lun Jul 12, 2010 6:42 pm
por pedrito76
Gracias Mauricio,
la he probado y funciona, pero solo funciona si me encuentro en la hoja activa en ese momento si estoy en otra hoja distinta o si la incluyo dentro de otra macro llamandola, ya no me funciona, pues la macro la ejecuto a través de un botón y como este botón no esta en la misma hoja pues no funciona la macro,
¿como se podría solucionar ?
De nuevo Gracias Compañeros, pues me estáis siendo de una gran ayuda.
Re: Copiando rangos con formulas
Publicado: Lun Jul 12, 2010 6:47 pm
por mauricio
Compañero, todos esos conceptos están en el libro, como hacer referencias a otras hojas, a la hoja que quieras... por favor, checalo...
oHoja = ThisComponent.getSheets.getByName ( "LAHOJAQUEQUIERAS" )
Saludos
Re: Copiando rangos con formulas
Publicado: Mar Jul 13, 2010 5:01 pm
por pedrito76
Hola de nuevo en esta macro que he realizado y que funciona, ahora lo que me ocurre es que se salta un mes, en lugar de ir con fechas correlativas, osea de mes en mes se salta uno,
¿Por qué?
No encuentro el que me lo haga de un mes a otro

Re: Copiando rangos con formulas
Publicado: Mar Jul 13, 2010 10:40 pm
por mauricio
Así, sin ver el error o el código es muy, muy complicado ayudarte...
Saludos
Re: Copiando rangos con formulas
Publicado: Mié Jul 14, 2010 10:03 am
por pedrito76
Adjunto el Archivo, bueno parte pues pesaba mucho, donde estan las fechas si realizas la macro, Cambiar Fecha se cambia de un mes a otro saltandose uno, como podría solucionarlo?
Gracias Compañeros de antemano
P.D.: Ahora la estoy probando también y me vuelve a fallar, la pongo en su correspondiente celda y me sale el fallo #N/A

Re: Copiando rangos con formulas
Publicado: Mié Jul 14, 2010 3:29 pm
por mauricio
Hola...
No entiendo por que no dan toda la información para poder ayudarles. Tienes varias macros en tu archivo no se cual es la que esta fallando, y cual es la que hiciste, por que la que tienes es prácticamente igual a la que te pase... si tu no estas dispuesto a hacer un mínimo esfuerzo para explicarte, no esperes que nadie haga el esfuerzo por entenderte, de nuevo, tomalo como una critica constructiva...
Código: Seleccionar todo
Sub CambiarFecha()
Dim oDoc As Object
Dim oHoja As Object
Dim oOrigen As Object
Dim oDestino As Object
'Este documento
oDoc = ThisComponent
'La hoja activa
oHoja = ThisComponent.getSheets.getByName ("Rangos")
'El rango origen
oOrigen = oHoja.getCellRangeByName( "FechaSiguiente" )
'La celda destino A15
oDestino = oHoja.getCellByPosition( 29,4 )
oHoja.getCellByPosition( 29,4 ).setFormula("Fechaactual")
'Copiamos el rango
oHoja.copyRange( oDestino.getCellAddress, oOrigen.getRangeAddress )
'IMPORTANTE: Todos estos métodos requieren que el origen y el destino tengan
'EXACTAMENTE el mismo tamaño
oDestino = oHoja.getCellRangeByName( "Fechaactual" )
oDestino.setData( oOrigen.getData )
oDestino = oHoja.getCellRangeByName( "Fechaactual" )
oDestino.setDataArray( oOrigen.getDataArray )
oDestino = oHoja.getCellRangeByName( "FechaSiguiente" )
oDestino.setFormulaArray( oOrigen.getFormulaArray )
End Sub
Lo cual esta mal, solo tienes que
usar una de las cuatro opciones que te pase para copiar datos, solo una que cubra tu necesidad, son cuatro formas diferentes, pero solo debes de usar una de ellas.
Saludos
Re: Copiando rangos con formulas
Publicado: Mié Jul 14, 2010 4:04 pm
por pedrito76
OK, Mauricio
no te preocupes, esto es como cuando eramos pequeños que uno empieza a leer y el profesor siempre tiene que tener calma a la hora de explicar para que los alumnos podamos aprender bien. Es cierto que debo de pararme un poco más (aunque soy impaciente por naturaleza,

)
Espero no molestar a nadie con tanta pregunta

... solo quiero aprender bien. De todos modos muchas gracias no me cansare de deciros que me sois de gran ayuda.
EDITO.: Solo para decir que tengo solucionada la macro que quería, la única que no tengo es la de Acoplar.

Re: [RESUELTO]Copiando rangos con formulas
Publicado: Mié Jul 14, 2010 5:42 pm
por mauricio
Hola...
No, no me preocupo... pero ya no somos pequeños compañero, ya somos adultos y podemos hablar de adulto a adulto, creo yo...
Las preguntas no molestan, al menos a mi no, si no, te aseguro que no respondería... pero si quieres aprender hay que estudiar, lo siento, no hay de otra, te lo dice un programador autodidacta de mucho camino recorrido... lo que si me puede llegar a molestar es, como dicen en mi pueblo; -que quieran el remedio y el tramito-, es decir, que sin ningún esfuerzo esperen tener solo las respuestas...
P.D. Tu macro Acoplar todavía la tienes en lenguaje VBA, tienes que migrarla a OOo Basic, de nuevo, en mi libro está todos los conocimientos e instrucciones necesarias para lograrlo y como ultima recomendación, procura olvidarte del método SELECT, no es nada eficiente y en la mayor parte de los casos no es necesaria...
Saludos