[RESUELTO] Ordenar datos sin perder el formato de la tabla

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
markotxe
Mensajes: 31
Registrado: Jue May 02, 2019 9:47 am

[RESUELTO] Ordenar datos sin perder el formato de la tabla

Mensaje por markotxe »

Buenas noches,
Utilizó la macro siguiente para ordenar datos (de menos a mas).

Código: Seleccionar todo

'
----------------------------------------------------------         
'__ Ordenar TableauB ______________________________________
'----------------------------------------------------------
  Dim oSortFields(0) as new com.sun.star.util.SortField
  Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
'----------------------------------------------------------
'_____ Elige la columna de referencia _____________________ 
    oSortFields(0).Field = 4 ' 5ª Columna
    oSortFields(0).SortAscending = True
'_____ Description du tri _________________________________
    oSortDesc(0).Name = "SortFields"
    oSortDesc(0).Value = oSortFields()  
'_____ Effectua el trabajo ________________________________
    oTableauB.Sort(oSortDesc())
'----------------------------------------------------------   
El código funciona y hace el trabajo pero…
Cuando los datos se ordenan, arrastran con ellos las celdas con los formatos (colores de fundo). De tal manera que el resultado final presenta varias líneas del mismo color una de bajo de la otra.
Me gustaría ordenar únicamente los datos sin que afecte la tabla original. Y no sé hacer...

Adjunto un archivo ejemplo para ilustrar la problemática. Espero que sabrá explicitar mejor la situación.

Gracias por vuestra atención, todas las pistas sugestiones o soluciones serán las bienvenidas.

Atentamente.
Adjuntos
Ordenar.ods
(22.7 KiB) Descargado 30 veces
Última edición por markotxe el Sab Oct 05, 2024 9:34 am, editado 1 vez en total.
OpenOffice 4.1.5 CALC, Window10
FJCC-ES
Mensajes: 893
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: [Calc] Ordenar datos sin perder el formato de la tabla

Mensaje por FJCC-ES »

No veo el problema con OpenOffice.
Encontré la propiedad BindFormatsToCellContent. Prueba con esta macro.

Código: Seleccionar todo


Sub Ordenar
    oDoc                = ThisComponent
    oF                  = oDoc.Sheets    
    oFR                 = oF.getByName("Ritmos")
    oTableauB           = oFR.getCellRangeByName("F11:N60") 
'----------------------------------------------------------         
'__ Ordenar TableauB ______________________________________
'----------------------------------------------------------
  Dim oSortFields(0) as new com.sun.star.util.SortField
  Dim oSortDesc(1) as new com.sun.star.beans.PropertyValue
'----------------------------------------------------------
'_____ Elige la columna de referencia _____________________ 
    oSortFields(0).Field = 4 ' 5ª Columna
    oSortFields(0).SortAscending = True
'_____ Description du tri _________________________________
    oSortDesc(0).Name = "SortFields"
    oSortDesc(0).Value = oSortFields() 
    oSortDesc(1).Name = "BindFormatsToContent"
    oSortDesc(0).Value = FALSE 
'_____ Effectua el trabajo ________________________________
    oTableauB.Sort(oSortDesc())
'----------------------------------------------------------   
End Sub
markotxe
Mensajes: 31
Registrado: Jue May 02, 2019 9:47 am

Re: [Calc] Ordenar datos sin perder el formato de la tabla

Mensaje por markotxe »

Buenos días FJCC-ES,
Funciona de maravilla! Otra vez mas, usted ha dado en el clavo!

Muchísimas gracias por la rapidez, el tiempo dedicado y la eficacidad de su respuesta.
Un muy buen fin de semana!

Nota: Por si alguien fuera interesado, dejo un documento ejemplo. adaptado con el código de FFJCC.ES. (solo se tuvo que substituir un (1) por (0),)
Adjuntos
Ordenar y guardar formato.ods
(22.56 KiB) Descargado 52 veces
OpenOffice 4.1.5 CALC, Window10
Responder