Jump to content

Macros/Calc/ba030/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba030 and the translation is 100% complete.


Resumen

Esta página proporciona un procedimiento de LibreOffice Basic LibreOffice que copia el resultado de un filtro avanzado a una ubicación distinta. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la guía de Calc 7.0.

Descripción

Los resultados de un filtro avanzado se pueden reflejar en una posición diferente utilizando la propiedad OutputPosition. La copia/extración de los resultados de esta manera elimina la necesidad de Calc para ocultar filas que no coinciden con los criterios de búsqueda, lo que normalmente haría si filtra in situ.

La siguiente macro demuestra cómo copiar los resultados del filtro a una ubicación diferente. Tenga en cuenta que el descriptor del filtro debe modificarse antes de aplicar esta configuración del filtro.

Para demostrar el funcionamiento de la macro, se ha modificado el código de AdvancedRangeFilter en la página Crear un filtro avanzado insertando el siguiente código, justo antes de que la llamada al método Filter.

El documento de Calc para descarga, contiene la versión modificada de la macro AdvancedRangeFilter y utiliza los mismos intervalos de datos y de criterios de clasificación. Los resultados filtrados se colocan a partir de la celda B13 de la Hoja1.

Nota:
La propiedad OutputPosition devuelve una copia de una estructura. Como resultado, no es posible establecer valores individuales, como la fila o columna, directamente a través de esta propiedad. Por ejemplo, establecer oFilterDesc.OutputPosition.row en 2 no funcionará, ya que es la propiedad fila en la copia, no en el original, que cambia.

Código

REM Copia los datos de salida del filtro en otro lugar.
  oFiltDesc.CopyOutputData = True

  REM Crear una dirección de celda y establecerla para la hoja1
  REM Columna B, Fila 13 (recureda, empieza a contar desde 0)
  Dim outputCell As New com.sun.star.table.CellAddress
  outputCell.Sheet = 0
  outputCell.Column = 1
  outputCell.Row = 12
  oFiltDesc.OutputPosition = outputCell

Este documento de Calc contiene el código LibreOffice Basic.