[RESUELTO] Filtro con Macros alternativa bug de LibreOffice

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

[RESUELTO] Filtro con Macros alternativa bug de LibreOffice

Notapor elandriu » Vie Oct 23, 2015 6:58 pm

Hola a todos,
Tengo un problema con un filtro usando macros.
Quiero filtrar la columna 3 de un rango llamado "campo", el problema es que las celdas de la columna 3 a filtrar tiene una formula, ese resultado cuando resulta en "NO", no lo debe contener en el filtro.

He probado escribiendo "NO" manualmente (sin que sea la formula quien de el resultado y la macro que a continuación escribo, me funciona perfecto.

Mi pregunta es: ¿Cómo puedo hacer para que mi macro funcione cuando las celdas a filtrar contienen una fórmula como resultado a filtrar.

Un saludo y gracias.

Código: Seleccionar todo   Expandir vistaContraer vista
Sub Filtro()
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 = "campo"
   oRBD = oRangosBD.getByName( sNombre )
   oDesFiltro = oRBD.getFilterDescriptor()   
'El campo por el que queremos filtrar
   mCamposFiltro(0).Field = 2
'El tipo de comparación
   mCamposFiltro(0).Operator = com.sun.star.sheet.FilterOperator.NOT_EQUAL   
'Si es un número
   mCamposFiltro(0).IsNumeric = FALSE   
'El valor de comparación
   mCamposFiltro(0).StringValue = "NO"
'Le pasamos los campos
   oDesFiltro.FilterFields = mCamposFiltro
'Refrescamos el rango para ver el resultado del filtro
   oRBD.refresh()
   MsgBox "Listo"
End Sub
Última edición por elandriu el Lun Oct 26, 2015 6:36 pm, editado 1 vez en total
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Filtrar celdas que contiene una función usando Macros

Notapor fornelasa » Vie Oct 23, 2015 7:59 pm

Sugiero olvidarnos un poquito del codigo y enviar un archivo ejemplo aclarando aún más el problema.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3234
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Filtrar celdas que contiene una función usando Macros

Notapor SLV-es » Vie Oct 23, 2015 8:10 pm

¿La fórmula contenida en las celdas devuelve una cadena de carácteres con "No"?
Revisa si devuelven "No " o " No"; es un error común.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Filtrar celdas que contiene una función usando Macros

Notapor elandriu » Vie Oct 23, 2015 8:21 pm

Estoy creando un ejemplo para subir un archivo. En un rato lo subo.

La fórmula devuelve "NO", tal cual sin espacio y hasta en mayúsculas como intento filtrar. Cuando en lugar de que lo devuelva la fórmula, lo escribo manualmente al "NO", me funciona.
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Filtrar celdas que contiene una función usando Macros

Notapor elandriu » Vie Oct 23, 2015 9:25 pm

Lo he despejado del trabajo para solo quedarme con el filtro y me encuentro que si hago primero un filtro automático y le digo que muestre todo menos "NO" (sea función o valor), y luego pongo y saco tantas veces como quiero el filtro, me funciona.

Pero cuando abro el archivo y ejecuto la macro, no funciona.

Como les decía, una vez que hago el filtro manual y lo quito, el filtro de la macro y la limpieza de la macro, funcionan hasta que vuelvo a cerrar el archivo.

Espero que le encuentren el problema que no puedo encontrar la solución.

Un saludo
Adjuntos
prue.ods
(60.22 KiB) 99 veces
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Filtrar celdas que contiene una función usando Macros

Notapor fornelasa » Vie Oct 23, 2015 11:50 pm

En OpenOffice funciona correctamente, me atrevería a decir que es un bug de LibreOffice ya que en AOO funciona normal.
Si seleccionamos de forma manual "campo" en Datos <> Definir Intervalo ya funciona ..... pero no es lo normal.
Sugiero intentar por otro camino.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3234
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Filtrar celdas que contiene una función usando Macros

Notapor elandriu » Sab Oct 24, 2015 12:30 am

Gracias fornelasa. Me podría haber vuelto loco!!!
Le estuve dando muchas vueltas. He cambiado varias veces el código para filtrar diferente pero siempre me encuentro con la misma traba. En definitiva siempre estoy necesitando filtrar.
Se te ocurre alguna idea para engañar y hacer algo automático para que enganche esa primera vez luego que se abre el documento?
Gracias!
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Filtrar celdas que contiene una función usando Macros

Notapor fornelasa » Sab Oct 24, 2015 12:38 am

ok dejame ver, ahorita voy de salida, en cuanta pueda lo checo ..... si es que alguien más de la comunidad no lo revisa.
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3234
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Filtrar celdas que contiene una función usando Macros

Notapor elandriu » Sab Oct 24, 2015 12:53 am

Gracias Federico y te mando mis deseos de que el huracán haga el menor daño posible.
Un saludo,
Andrés
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

Re: Filtrar celdas que contiene una función usando Macros

Notapor fornelasa » Lun Oct 26, 2015 6:16 pm

Veinte años despues ...... :lol:
Ante la falla (o posible Bug) de LibreOffice podriamos usar una macro como la mostrada en el siguiente archivo ejemplo:
Saludos, Federico.
Adjuntos
prue(2).ods
Filtro automático.
(57.81 KiB) 175 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3234
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Filtrar celdas que contiene una función usando Macros

Notapor elandriu » Lun Oct 26, 2015 6:33 pm

Hola Federico,
Que buena solución, ahora lo voy a aplicar y utilizando la protección de celda "oculto", lo protejo y no lo muestro a quien vea la hoja.

Muchas gracias!!!
Libreoffice 4.4.5 - OSX
elandriu
 
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am


Volver a Macros y API UNO

¿Quién está conectado?

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