Macro Filtro automatico o filtro Estandar.

Discute sobre la aplicación de hojas de cálculo
Responder
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Macro Filtro automatico o filtro Estandar.

Mensaje por JoePublic »

Hola, estoy intentando crear un filtro automático con un solo criterio. No me sirve un "filtro avanzado"
En el Libro de Mauricio "Aprendiendo OOo Basic" enlace libro: https://gitlab.com/mauriciobaeza/libreo ... ster/books
hay una macro para crear un filtro automatico y filtra la tabla por una solo columna con un solo criterio.
Pero al probarlo, solo he conseguido que se active el filtro pero no aparece ningn resultado.
Al ir a comprobar si se cogen los datos que paso con el macro he visto en Menu/Datos/Mas filtros/Filtro Estandar he visto que el nombre por el que quiero filtrar esta en este filtro (vease la imagen)
Entonces no entiendo que falla.
El mismo macro tambien esta aqui: https://wiki.openoffice.org/wiki/ES/Man ... trar_datos

Alguien lo puede ejecutar y ver que pasa?. He puesto el codigo de la macro aqui abajo y adjunto el archivo tambien.
Gracias.
PD. la variable sNombre = "Direcciones" definí el intervalo en Menu/Datos/definir intervalo/Nombre escribir 'Direcciones' y seleccionar toda la tabla con encabezados incluidos para que funcionara, de lo contrario no encuentra el rango.

Código: Seleccionar todo

 Sub Filtro_Automatico()
 'Source: https://wiki.openoffice.org/wiki/ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/RangosDeDatos#Filtrar_datos
 
 Dim oDoc As Object
 Dim oRangosBD As Object
 Dim sNombre As String
 Dim oRBD As Object
 Dim oDesFiltro As Object
 Dim mCamposFiltro(0) As New com.sun.star.sheet.TableFilterField
 
     oDoc = ThisComponent
     oRangosBD = oDoc.DataBaseRanges()
     sNombre = "Direcciones" 'En Menu/Datos/definir intervalo/Nombre escribir 'Direcciones' y seleccionar toda la tabla con encabezados incluidos.
     If oRangosBD.hasByName( sNombre ) Then 'Verificamos que exista el nombre del rango de datos
         oRBD = oRangosBD.getByName( sNombre )
         'Mostramos el autofiltro
         oRBD.AutoFilter = True 'Pone flecha a las columnas del filtro.
               
         oDesFiltro = oRBD.getFilterDescriptor()
         'El campo por el que queremos filtrar
         mCamposFiltro(0).Field = 1 'Columnas empiezan a partir de la 0. El 1 significa que buscara en la columna 2.
         'El tipo de comparación
         mCamposFiltro(0).Operator = com.sun.star.sheet.FilterOperator.EQUAL
         'Si es un número
         mCamposFiltro(0).IsNumeric = False
         'El valor de comparación
         mCamposFiltro(0).StringValue = "nikole"
         'Le pasamos los campos
         oDesFiltro.FilterFields = mCamposFiltro
         'Refrescamos el rango para ver el resultado del filtro
         oRBD.refresh()
     Else
         MsgBox "El rango de datos no existe"
     End If
  End Sub

Adjuntos
Filtro automatico con macro - Test.ods
(16.59 KiB) Descargado 160 veces
Esto es lo que aparece en la hoja de Calc. Foto1
Esto es lo que aparece en la hoja de Calc. Foto1
soffice.bin_NASMZg8bjL.jpg (40.48 KiB) Visto 1714 veces
Foto de lo que aparece despues de realizar el macro. Foto2
Foto de lo que aparece despues de realizar el macro. Foto2
soffice.bin_GifpxLfqJC.jpg (27.99 KiB) Visto 1714 veces
Última edición por JoePublic el Jue Oct 22, 2020 8:35 pm, editado 2 veces en total.
Usuario apasionado de las hojas de cálculo. Novato aprendiz de macros con OOo Basic y VBA.
LibreOffice Version: 6.4.3.2 (x64) y Sistema Operativo Windows 10 Home.
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Re: Macro Filtro automatico o filtro Estandar.

Mensaje por JoePublic »

Hola,
Subo un archivo Calc con varios filtros, ya solucionados.
En uno Activa el autofiltro y busca por una sola columna.
En el otro Activa el autofiltro y busca por dos columnas.
Los filtros los encontre en el libro de Mauricio, pero no se porque no me funcionaban y ahora ya me funcionan.

Pd. Cuidado con el "rango de datos". Debes de NOMBRAR para tus autofiltros en el Menu/Datos/"Definir intervalo" y seleccionar toda la tabla incluido el encabezado que es donde estan los nombres de las columnas.
Gracias por todo.
Adjuntos
Filtro automatico con macro BBB.ods
Archivo con macro de autofiltro por un campo y con dos campos.
(16.1 KiB) Descargado 237 veces
Última edición por JoePublic el Jue Oct 22, 2020 8:35 pm, editado 1 vez en total.
Usuario apasionado de las hojas de cálculo. Novato aprendiz de macros con OOo Basic y VBA.
LibreOffice Version: 6.4.3.2 (x64) y Sistema Operativo Windows 10 Home.
Avatar de Usuario
JoePublic
Mensajes: 36
Registrado: Dom Sep 06, 2020 5:34 pm

Re:Macro Filtro automatico o filtro Estandar.

Mensaje por JoePublic »

Ves la flechita con el punto? Eso quiere decir que en esta columna, el filtro se ha aplicado. Pero el archivo que subí con la macro, ésta no pone el puntito. Como se activará el puntito si ejecutas el filtro a traves del codigo de una macro?
Ayuda !!!
Adjuntos
Filtro3.jpg
Filtro3.jpg (66.68 KiB) Visto 1651 veces
Usuario apasionado de las hojas de cálculo. Novato aprendiz de macros con OOo Basic y VBA.
LibreOffice Version: 6.4.3.2 (x64) y Sistema Operativo Windows 10 Home.
Responder