Macros/Calc/ba029/es
TDF LibreOffice Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Ask LibreOffice Donar
Resumen
Esta página proporciona un procedimiento de macro de LibreOffice Basic que crea un filtro avanzado. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la Guía de Calc 7.0.
Descripción
Aplicar un filtro avanzado con una macro funciona de manera similar a configurar un filtro estándar. La diferencia clave es que el rango de celdas que contiene los criterios del filtro se usa para crear el descriptor de filtro. La siguiente macro demuestra cómo se puede hacer usando el metodo CreateFilterDescriptorByObject. Se utilizan las celdas de la Hoja1, de A1 a H11 (calificaciones de estudiantes) como el intervalo de datos y las celdas de la hoja2, de A1 a H3 como el intervalo de criterios. La hoja de cálculo de descarga contiene dichos intervalos, de datos y de criterios.
Código
Sub AdvancedRangeFilter()
Dim oSheet 'Una hoja del documento de Calc
Dim oRanges 'Los intervalos con nombre.
Dim oCritRange 'Intevalo que contiene los criterios de filtro
Dim oDataRange 'Intervalo de los datos para filtrar
Dim oFiltDesc 'Descriptor de filtro
REM Intervalo que contiene los criterios de filtro
oSheet = ThisComponent.getSheets().getByIndex(1)
oCritRange = oSheet.getCellRangeByName("A1:H3")
REM Puedes obtener el intervalo con los criterios de
REM filtro a partir de un intervalo con nombre
REM oRanges = ThisComponent.NamedRanges
REM oRange = oRanges.getByName("AverageLess80")
REM oCritRange = oRange.getReferredCells()
REM Los datos que se van a filtrar
oSheet = ThisComponent.getSheets().getByIndex(0)
oDataRange = oSheet.getCellRangeByName("A1:H11")
oFiltDesc = oCritRange.createFilterDescriptorByObject(oDataRange)
oDataRange.filter(oFiltDesc)
End Sub
Este documento de Calc contiene el código LibreOffice Basic.