Macros/Calc/ba026/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 estandar simple. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la Guía de Calc 7.0.
Descripción
En una macro, el filtrado de un intervalo de datos se realiza utilizando el método filtre (), ya sea en el intervalo o la hoja que contiene dicho intervalo. Al igual que un descriptor de clasificación, un "descriptor de filtro" contiene la configuración del filtro para la hoja actual, así como si la primera fila o columna contiene encabezados que no deben filtrarse. Se puede generar un descriptor de filtro utilizando el método CreateFilterDescriptor () en una hoja o en un intervalo de celdas:
- createFilterDescriptor(Empty)
- Crea un descriptor de filtro. Si el modificador booleano Empty se establece en TRUE, se crea un descriptor de filtro vacío. Si "Empty" se establece en FALSE, el descriptor utilizará la configuración anterior del objeto actual (como un intervalo de base de datos).
Al igual que con los descriptores de clasificación, los descriptores de filtro se pueden crear utilizando este método, modificar y pasar como argumento al método de filtrado. La siguiente macro demuestra este proceso creando un filtro estándar simple para la primera hoja en un documento.
Código
Sub SimpleSheetFilter()
Dim oSheet ' Hoja que contentrá el filtro
Dim oFilterDesc ' Descriptor de filtro
Dim oFields(0) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.getSheets().getByIndex(0)
REM Si el argumento es True, crea un filtro vacío
REM descriptor. Si el argumento es falso, crea un
REM descriptor con los ajustes anteriordes.
oFilterDesc = oSheet.createFilterDescriptor(True)
With oFields(0)
REM Puedes usar la propiedad de conexión para indicar
REM como conectar el campo anterior. Esto es
REM el primer campo, aunque no es necesario.
'.Connection = com.sun.star.sheet.FilterConnection.AND
'.Connection = com.sun.star.sheet.FilterConnection.OR
REM La propiedad del campo es el número de la columna
REM (indice 0) para el filtdro. Si conoces la celda
REM puedes usar .Field = oCell.CellAddress.Column.
.Field = 5 ' columna del ejercicio #2
REM Comparación numérica o de texto?
.IsNumeric = True
REM Se utiliza una comparación numérica
REM porque se ha indicaco True a .IsNumeric
.NumericValue = 80
REM Si IsNumeric fuese Faalse, entonces
REM se utilizaría una comparación de texto.
REM .StringValue = " cualquiera "
REM Los operadores puedn ser EMPTY, NOT_EMPTY, EQUAL,
REM NOT_EQUAL, GREATER, GREATER_EQUAL, LESS,
REM LESS_EQUAL, TOP_VALUES, TOP_PERCENT,
REM BOTTOM_VALUES, and BOTTOM_PERCENT
.Operator = com.sun.star.sheet.FilterOperator.GREATER_EQUAL
End With
REM El descriptor del filtro puede usar las siguientes
REM propiedades: IsCaseSensitive, SkipDuplicates,
REM UseRegularExpressions,
REM SaveOutputPosition, Orientation, ContainsHeader,
REM CopyOutputData, OutputPosition, and MaxFieldCount.
oFilterDesc.setFilterFields(oFields())
oFilterDesc.ContainsHeader = True
oSheet.filter(oFilterDesc)
End Sub
Este documento de Calc contiene el código LibreOffice Basic.