[RESUELTO] Copiar rango fila a rango columna de otra
[RESUELTO] Copiar rango fila a rango columna de otra
Buenas tardes,
estoy empezando en esto de las macros con LibreOffice, y la única solución que he encontrado para realizar esta tarea, es utilizando el dispatcher.
Se trata de copiar muchos rangos del tipo "A1:F6" , en un rango del tipo "A2:A7", y cada rango origen en una hoja distinta. He conseguido hacerlo utilizando el dispatcher, pero resulta muy lento cuando los rangos a copiar son muchos,
tanto por la actualización del interface de usuario al saltar entre hojas (que me gustaría saber como desactivar a través de código, puesto que las soluciones que he encontrado no me han servido), como por los pasos seguidos por el dispatcher.
He tratado de utilizar getdata(), getdataArray() y sus correspondientes set, pero al ser matrices de dimensiones diferentes, no me funciona. Algún consejo o pista.
Muchas gracias.
Enhorabuena a todo el mundo que participa en el foro, ayudando o consultando.
estoy empezando en esto de las macros con LibreOffice, y la única solución que he encontrado para realizar esta tarea, es utilizando el dispatcher.
Se trata de copiar muchos rangos del tipo "A1:F6" , en un rango del tipo "A2:A7", y cada rango origen en una hoja distinta. He conseguido hacerlo utilizando el dispatcher, pero resulta muy lento cuando los rangos a copiar son muchos,
tanto por la actualización del interface de usuario al saltar entre hojas (que me gustaría saber como desactivar a través de código, puesto que las soluciones que he encontrado no me han servido), como por los pasos seguidos por el dispatcher.
He tratado de utilizar getdata(), getdataArray() y sus correspondientes set, pero al ser matrices de dimensiones diferentes, no me funciona. Algún consejo o pista.
Muchas gracias.
Enhorabuena a todo el mundo que participa en el foro, ayudando o consultando.
Última edición por silco el Jue Nov 12, 2015 12:10 am, editado 1 vez en total.
LibreOffice 4.4 - Debian 8
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Re: Copiar un rango fila de una hoja, a un rango columna de
Puedes probar EasyDev, en la versión de desarrollo he agregado un modo muy sencillo de hacer lo que quieres...
En teoría si copias un rango el destino debería ser del mismo tamaño, si no lo es obtienes un error, pero EasyDev puede calcularte el rango destino.
http://easydev.readthedocs.org/en/devel ... l#set-data
Saludos
En teoría si copias un rango el destino debería ser del mismo tamaño, si no lo es obtienes un error, pero EasyDev puede calcularte el rango destino.
http://easydev.readthedocs.org/en/devel ... l#set-data
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
Re: Copiar un rango fila de una hoja, a un rango columna de
Muchas gracias por tu respuesta Mauricio, en principio la idea es utilizar LibreOffice tal y como viene, sin extensiones ni complementos. No conocía EasyDev, investigaré y la probaré. Finalmente encontré una solución celda por celda para transponer de fila a columna un rango. Pongo el código por si le sirve a alguien, o tenéis algún consejo.
Siendo más rápido que con el dispatcher, sigue siendo lento, creo debido a la creación de numerosas nuevas hojas, es posible deshabilitar toda actualizacion del interface de usuario, hasta que haya realizado los cálculos y creado las hojas?
Gracias por vuestro tiempo.
Código: Seleccionar todo
Sub CopiaFilaenColumna (rangoorigen As Object, rangodestino As Object)
Dim datosorigen
Dim datosdestino
Dim i As Integer
datosorigen=rangoorigen.getdataArray()
datosdestino=rangodestino.getdataArray()
If rangoorigen.getRows.getCount() = 1 Then
For i=0 To rangoorigen.getColumns.getcount()-1
datosdestino(i)(0) = datosorigen(0)(i)
Next
Else
MsgBox "Rango origen debe ser de una fila"
End If
rangodestino.setdataArray(datosdestino)
End Sub
Gracias por vuestro tiempo.
LibreOffice 4.4 - Debian 8
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Re: Copiar un rango fila de una hoja, a un rango columna de
¿alguna razon para desaprovechar el potencial de usar extensiones o complementos?silco escribió:la idea es utilizar LibreOffice tal y como viene, sin extensiones ni complementos.
______________________________________________
"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
Re: Copiar un rango fila de una hoja, a un rango columna de
La razón es demostrar el potencial equivalente para tareas como esta, de Calc respecto de Excel en una distribución Linux preconfigurada.
LibreOffice 4.4 - Debian 8
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Re: Copiar un rango fila de una hoja, a un rango columna de
Me parece un muy mal argumento, pero cada quien... no veo la diferencia, por ejemplo, que lo hagas con Basic, a que lo hagas con Python con EasyDev, que usa el mismo API, bueno, si hay una gran diferencia...
______________________________________________
"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
Re: Copiar un rango fila de una hoja, a un rango columna de
No entiendo la finalidad de cuestionar o juzgar mi decisión. Aún así te explico, usuarios reticentes al cambio de Windows a Linux, de Office a LibreOffice o AOO, usuarios sin grandes conocimientos, el objetivo es poder mostrarles como hacer tareas básicas con macros, de forma similar a como lo hacen en Excel, para que el cambio sea menos traumatico, sin instalar este complemento etc.. Una vez se introduzcan en este mundo, llegarán a las extensiones y demás características avanzadas de LibreOffice, pero el primer paso es el primer paso.
No te juzgo, no me juzgues tú.
No te juzgo, no me juzgues tú.
LibreOffice 4.4 - Debian 8
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Si alguien te dedica su tiempo, te da algo que nunca recuperará...
Re: Copiar un rango fila de una hoja, a un rango columna de
Nadie te esta juzgando... como tu, externo mi opinión solamente... estas en un foro público donde se ayuda, para ayudar, entre otras cosas, se externan opiniones... pero sin problemas, no dire más...
______________________________________________
"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