Hacer un macro para filtrar filas

Discute sobre la aplicación de hojas de cálculo

Hacer un macro para filtrar filas

Notapor jjlasarte » Sab Nov 25, 2017 10:21 pm

Hola, quiero hacer un macro para filtrar filas con un filtro avanzado. Lo que pretendo es que al ejecutar la macro (con un botón), las filas se filtren con los criterios especificados en la tabla de condiciones. El problema es que creo la macro (Datos --> Filtro avanzado...), los datos se filtran, pero cuando vuelvo a ejecutar la macro es como si no se hubiese grabado y no funciona.

Gracias
OpenOffice 4.1.4 en Windows 10
jjlasarte
 
Mensajes: 3
Registrado: Sab Nov 25, 2017 10:02 pm

Re: Hacer un macro para filtrar filas

Notapor xiseme » Dom Nov 26, 2017 1:09 pm

Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Hacer un macro para filtrar filas

Notapor mauricio » Dom Nov 26, 2017 5:48 pm

y por supuesto la completa documentación de este tema:
https://wiki.openoffice.org/wiki/ES/Man ... trar_datos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5973
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX

Re: Hacer un macro para filtrar filas

Notapor jjlasarte » Dom Nov 26, 2017 11:10 pm

Gracias por la ayuda, me va un poco grande porque no entiendo mucho de esto. He podido apañarlo con un código del libro de Mauricio.
Ahora el problema es que no sé cómo hacer para que vuelvan a aparecer todos los registros.

Gracias de nuevo

Este es el código que he utilizado:

Código: Seleccionar todo   Expandir vistaContraer vista
Sub Filtrar()
Dim oDoc As Object
Dim oRangosBD As Object
Dim oBaseDatos As Object
Dim oDestino As Object
Dim oCriterios As Object
Dim oDesFiltro As Object

   oDoc = ThisComponent
   oRangosBD = oDoc.DataBaseRanges()
   'Nos aseguramos de que existen nuestros tres rangos
   If oRangosBD.hasByName( "BaseDatos" ) And oRangosBD.hasByName( "Criterios" ) And oRangosBD.hasByName( "Destino" ) Then
      'Obtenemos una referencia a los rangos origen
      oBaseDatos = oRangosBD.getByName( "BaseDatos" ).ReferredCells()
      oCriterios = oRangosBD.getByName( "Criterios" ).ReferredCells()
   oDestino = oRangosBD.getByName( "Destino" ).ReferredCells.getCellByPosition( 0,0 ).getCellAddress()
      
      'Obtenemos el descriptor del filtro del rango de criterios a partir del rango de datos
      oDesFiltro = oCriterios.createFilterDescriptorByObject( oBaseDatos )
      'Sin duplicados
      oDesFiltro.SkipDuplicates = False
      'Que pueda usar expresiones regulares
      oDesFiltro.UseRegularExpressions = False
      'Queremos el resultado en otra posición
      oDesFiltro.CopyOutputData= False
      'Le indicamos donde
      'oDesFiltro.OutputPosition = oDestino
      'El rango contiene encabezados de campos
      oDesFiltro.ContainsHeader = True
      
      'Filtramos con las opciones seleccionadas      
      oBaseDatos.filter( oDesFiltro )      
   Else
      MsgBox "El rango de datos no existe"
   End If
End sub
OpenOffice 4.1.4 en Windows 10
jjlasarte
 
Mensajes: 3
Registrado: Sab Nov 25, 2017 10:02 pm

Re: Hacer un macro para filtrar filas

Notapor xiseme » Lun Nov 27, 2017 1:03 pm

Tal vez...

Código: Seleccionar todo   Expandir vistaContraer vista
Sub quitafiltros
MostrarFilas(oBaseDatos)
End Sub

Sub MostrarFilas(oRango)
'Mostra todas las filas = quitar filtros
   oRango.getRows.Isvisible = True
End Sub
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
xiseme
 
Mensajes: 1888
Registrado: Lun Nov 24, 2008 1:13 pm

Re: Hacer un macro para filtrar filas

Notapor jjlasarte » Vie Dic 01, 2017 12:01 am

Estos no me funcionan :-(

Gracias de todas formas.
OpenOffice 4.1.4 en Windows 10
jjlasarte
 
Mensajes: 3
Registrado: Sab Nov 25, 2017 10:02 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados