[RESUELTO][Calc]Ordenar alfabéticamente

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

[RESUELTO][Calc]Ordenar alfabéticamente

Notapor markotxe » Sab May 23, 2020 1:01 am

Buenas noche,
Llevo unos días chocando con una dificultad que puede parecer sencilla.

Estoy tratando hacer un programa destinado a gestionar las inscripciones de una sala de deporte.
Las inscripciones se hacen desde una hoja ("Inscripciones"). A partir de la cual, se reparte las personas en el grupo que le corresponden. (Existe una hoja distinta por cada grupo).
Esta etapa la tengo controlada...

Me gustaría ahora ordenar alfabéticamente las listas después de cada inscripción.
A pesar de los posts editados en este forum y las búsquedas que realice en el net, no he conseguido adaptar y/o entender soluciones.
Es el objeto de mi visita aquí.
Gracias por vuestra atención.

Todas ideas, sugestiones, pistas serán las bien venidas.

CoOOrdialmente
Marc
Adjuntos
Ordenar alfabeticamente.ods
(20.02 KiB) 22 veces
Última edición por markotxe el Mar May 26, 2020 1:29 am, editado 2 veces en total
OpenOffice 4.1.5 CALC, Window10
markotxe
 
Mensajes: 23
Registrado: Jue May 02, 2019 9:47 am

Re: [Calc]Ordenar alfabéticamente

Notapor PepeOooSevilla » Lun May 25, 2020 11:03 pm

Hola.
En el módulo Module1 del archivo adjunto figura este código:

Código: Seleccionar todo   Expandir vistaContraer vista
REM  *****  BASIC  *****
Option Explicit

Sub Main()
   'Otros procesos antes de ordenar
   Call OrdenarDatos("Lista")
   Call OrdenarDatos("Lista2")
End Sub

Function UltimaFila(NombreHoja As String) As Long
   Dim Hoja As Object
   Dim Cursor As Object
   Dim DireccionRango As New com.sun.star.table.CellRangeAddress

   Hoja = ThisComponent.getSheets().getByName(NombreHoja)
   Cursor = Hoja.createCursor()
   With Cursor
      .gotoEndOfUsedArea(False)
      DireccionRango = .getRangeAddress()
   End With
   UltimaFila = DireccionRango.EndRow
End Function

Sub OrdenarDatos(NombreHoja As String)
   Dim Hoja As Object
   Dim Rango As Object
   Dim CamposOrden(1) As New com.sun.star.util.SortField
   Dim DescriptorOrden(1) As New com.sun.star.beans.PropertyValue

   Hoja = ThisComponent.getSheets().getByName(NombreHoja)
   'Rango de celdas a ordenar C5:Z#, siendo # = UltimaFila(NombreHoja)
   Rango = Hoja.getCellRangeByPosition(2, 4, 25, UltimaFila(NombreHoja))
   'APELLIDOS
   CamposOrden(0).Field = 0
   CamposOrden(0).SortAscending = True
   CamposOrden(0).FieldType = com.sun.star.table.TableSortFieldType.ALPHANUMERIC
   'NOMBRE
   CamposOrden(1).Field = 1
   CamposOrden(1).SortAscending = True
   CamposOrden(1).FieldType = com.sun.star.table.TableSortFieldType.ALPHANUMERIC
   DescriptorOrden(0).Name = "ContainsHeader"
   DescriptorOrden(0).Value = True
   DescriptorOrden(1).Name = "SortFields"
   DescriptorOrden(1).Value = CamposOrden()
   'Ordenamos con los parámetros establecidos
   Rango.Sort(DescriptorOrden())
End Sub

Al botón ORDENAR ALFABETICAMENTE de la hoja Inscripciones le he asignado la macro Main(). Haz pruebas y modifica a conveniencia.
Saludos cordiales.
Adjuntos
Ordenar alfabeticamente_markotxe.ods
LibO Calc 6.3.6
(32.23 KiB) 17 veces
LibreOffice 6.4.5. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Avatar de Usuario
PepeOooSevilla
 
Mensajes: 1436
Registrado: Sab Abr 04, 2009 6:10 pm
Ubicación: Sevilla (España)

Re: [RESUELTO][Calc]Ordenar alfabéticamente

Notapor markotxe » Mar May 26, 2020 12:19 am

Hola PepeOooSevilla, hola foro,

Genial! :bravo:

He realizado una prueba rápida en el documento original y funciona muy bien. Toca ahora adaptar la solución al conjunto del archivo. Sera la parte, la mas divertida (empezando con una base solida).

Por lo tanto os dirijo un doble agradecimiento!
- Uno por la solución que me habéis facilitado.
- Dos por abrirme perspectivas de investigación. Todavía no estoy familiarizado con las funciones y me queda mucho por leer y aprender. Con este ejemplo, espero poder practicar y aprender divirtiéndome.

Muchas gracias !!!
CooOrdialmente
Marc
OpenOffice 4.1.5 CALC, Window10
markotxe
 
Mensajes: 23
Registrado: Jue May 02, 2019 9:47 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado