[RESUELTO] Filtro con Macros alternativa bug de LibreOffice

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

[RESUELTO] Filtro con Macros alternativa bug de LibreOffice

Mensaje por elandriu »

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

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
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

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
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

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

Mensaje por SLV-es »

¿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
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

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

Mensaje por elandriu »

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

Mensaje por elandriu »

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) Descargado 194 veces
Libreoffice 4.4.5 - OSX
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

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!
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

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

Mensaje por elandriu »

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
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

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!
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

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

Mensaje por elandriu »

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
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

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) Descargado 307 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!
elandriu
Mensajes: 26
Registrado: Lun Oct 05, 2015 3:55 am

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

Mensaje por elandriu »

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
Responder