Oculta y muestra filas y columnas de una hoja de cálculo con la macro de ONLYOFFICE

9 August 2023By Sergey

Gestionar una gran cantidad de datos puede ser una tarea complicada. Eso es donde las macros de ONLYOFFICE brillan, automatizando tareas y liberando el potencial de tus hojas de cálculo. En este artículo te mostraremos cómo crear una macro fácil de usar que oculta o muestra filas y columnas específicas. Además, aunque tenemos una macro similar en la sección de ejemplos de macros de nuestra documentación, con esta macro daremos un paso más y la haremos aún más fácil de usar.

Oculta y muestra filas y columnas de una hoja de cálculo con la macro de ONLYOFFICE

Creación de la macro

Primero recuperamos la hoja actual en la hoja de cálculo ONLYOFFICE y la asignamos a la hoja variable:

const sheet = Api.GetActiveSheet()

A continuación definimos un rango que incluye las celdas desde la columna A (celda A1) hasta la columna M (celda M1) de la hoja activa. Utilizaremos este rango para manipular las columnas:

 const range = sheet.GetRange("A1:M1")

Después se crea la matriz rowsToHide, que contiene los números de fila que deben ocultarse o mostrarse. Esta matriz se puede personalizar añadiendo o quitando números de fila:

const rowsToHide = [5, 8, 9, 12, 14, 16, 21, 22, 31, 32, 33]

También creamos la matriz columnsToHide. Contiene los números de las columnas que deben ocultarse o mostrarse:

const columnsToHide = [2,4,5,7,8,10,11,13,14,16]

A continuación, recuperamos el estado oculto de la primera fila especificada en la matriz rowsToHide. Si la primera fila está oculta, la propiedad SetHidden() de las filas y columnas restantes se establece en false. Esto nos permite mostrar las filas y columnas seleccionadas. Si la primera fila de la matriz rowsToHide no está oculta, la propiedad SetHidden() se establece en true facilitando la ocultación del rango seleccionado:

const hidden = sheet.GetRows(rowsToHide[0]).GetHidden()

A continuación ejecutamos la función hideUnhideDetails. Se encarga de ocultar o mostrar las filas y columnas en función del estado de ocultación. Vamos a echarle un vistazo más de cerca:

function hideUnhideDetails(hidden) {
        rowsToHide.forEach(row => {
            sheet.GetRows(row).SetHidden(!hidden)
        })

Este bucle itera a través de cada número de fila especificado en la matriz rowsToHide y utiliza el método SetHidden() para ocultar o mostrar la fila respectiva basándose en el estado oculto opuesto. Por ejemplo, si hidden es true, la fila estará desocultada (!hidden es false), y si hidden es false, la fila estará oculta (!hidden es true).

  columnsToHide.forEach(column => {
            range.GetCols(column).SetHidden(!hidden)
        })
    }

Este bucle itera a través de cada número de columna especificado en la matriz columnsToHide y luego utiliza SetHidden() para ocultar o mostrar la columna.

El código completo de la macro es el siguiente:

(function()
{
    const sheet = Api.GetActiveSheet()
    const range = sheet.GetRange("A1:M1")
    const rowsToHide = [5, 8, 9, 12, 14, 16, 21, 22, 31, 32, 33]
    const columnsToHide = [2,4,5,7,8,10,11,13,14,16]
    const hidden = sheet.GetRows(rowsToHide[0]).GetHidden()
    hideUnhideDetails(hidden)
    // Unhide if hidden, Hide if unhidden
    function hideUnhideDetails(hidden) {
        rowsToHide.forEach(row => {
            sheet.GetRows(row).SetHidden(!hidden)
        })
        columnsToHide.forEach(column => {
            range.GetCols(column).SetHidden(!hidden)
        })
    }
})();

Ahora vamos a ejecutar nuestra macro y ver cómo funciona.

Esperamos que esta macro te ahorre tiempo y esfuerzo a la hora de gestionar grandes conjuntos de datos, permitiéndote centrarte en la información más relevante para tu trabajo. El uso de macros te permite aprovechar al máximo el potencial de ONLYOFFICE, aumentando significativamente tu productividad.

También te animamos a seguir explorando las posibilidades de las macros en ONLYOFFICE. Con un conocimiento más profundo de las macros de ONLYOFFICE, podrás automatizar tareas, mejorar la productividad y personalizar documentos. Comparte tus ideas y preguntas con nosotros. Esperamos poder colaborar contigo. ¡Mucha suerte en tus esfuerzos exploratorios!