[RESUELTO] Copiar rango fila a rango columna de otra

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

[RESUELTO] Copiar rango fila a rango columna de otra

Notapor silco » Mar Nov 10, 2015 9:47 pm

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.
Ú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á...
silco
 
Mensajes: 4
Registrado: Mar Nov 10, 2015 9:36 pm

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor mauricio » Mar Nov 10, 2015 9:53 pm

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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5870
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor silco » Mié Nov 11, 2015 10:11 pm

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.


Código: Seleccionar todo   Expandir vistaContraer vista
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


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.
LibreOffice 4.4 - Debian 8

Si alguien te dedica su tiempo, te da algo que nunca recuperará...
silco
 
Mensajes: 4
Registrado: Mar Nov 10, 2015 9:36 pm

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor mauricio » Mié Nov 11, 2015 10:21 pm

silco escribió:la idea es utilizar LibreOffice tal y como viene, sin extensiones ni complementos.

¿alguna razon para desaprovechar el potencial de usar extensiones o complementos?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5870
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor silco » Mié Nov 11, 2015 10:25 pm

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á...
silco
 
Mensajes: 4
Registrado: Mar Nov 10, 2015 9:36 pm

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor mauricio » Mié Nov 11, 2015 11:37 pm

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
Avatar de Usuario
mauricio
 
Mensajes: 5870
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor silco » Mié Nov 11, 2015 11:54 pm

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ú.
LibreOffice 4.4 - Debian 8

Si alguien te dedica su tiempo, te da algo que nunca recuperará...
silco
 
Mensajes: 4
Registrado: Mar Nov 10, 2015 9:36 pm

Re: Copiar un rango fila de una hoja, a un rango columna de

Notapor mauricio » Mié Nov 11, 2015 11:58 pm

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
Avatar de Usuario
mauricio
 
Mensajes: 5870
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX


Volver a Macros y API UNO

¿Quién está conectado?

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