viernes, 6 de noviembre de 2009

Excel - Como eliminar Sheets de forma rápida

Supongamos que debemos realizar una tarea recurrente en la que una de las acciones a realizar es la eliminación de todas las hojas existentes en un libro exceptuando una o varias hojas localizadas. Si nuestro libro contiene muchas hojas, puede llegar a resultarnos una tarea pesada no por complejidad, sino por la perdida de tiempo que nos puede llegar a ocasionar la localización y supresión de las hojas que no necesitamos.

¡Pero la solución no podría ser más rápida y sencilla! Con tan solo 7 líneas de código conseguiremos eliminar en pocos segundos cuantas hojas queramos con una pequeña macro: 



Application.DisplayAlerts = wdAlertsNone
    For Each hoja In Sheets
        If hoja.Name <> "Conservar" Then
            hoja.Delete
        End If
    Next

    Application.DisplayAlerts = wdAlertsAll

Para todos aquellos que no estéis familiarizados con los pormenores del código de VBA, os explicar´+e brevemente lo que hace cada una de las líneas de nuestra Macro:

'Evitamos que aparezcan ventanas de confirmación de eliminación
 Application.DisplayAlerts = wdAlertsNone

'Recorremos todas las hojas desde la primera a la última con la instrucción FOR EACH.
    For Each hoja In Sheets
        'Verificamos que la hoja actual, no se trata de alguna que deseemos conservar
        If hoja.Name <> "Conservar" Then
            'Al no tratarse de la hoja que deseamos conservar, la eliminamos
            hoja.Delete
        End If
    Next
    'Una vez finalizadas todas las eliminaciones, activamos nuevamente las alertas.
    Application.DisplayAlerts = wdAlertsAll

Una de las partes más importantes de esta pequeña macro y que su uso puede ser muy habitual para aquellos que desarrollan macros de control, gestión y/o detección de cambios (por ejemplo: un log o regístro automátizado de cambios realizados que detecte cualquier alteración o cambio en el libro de forma automática) es la supresión de los mensajes de alerta de Microsoft Excel con la siguiente instrucción:

Application.DisplayAlerts = wdAlertsNone

Lo que conseguimos con la desactivación temporal de las alertas es evitar, en este caso; que nos aparezca el tipico mensaje de Microsoft de confirmación de supresión de la hoja. Al inhabilitar las alertas, la ejecución de nuestra pequeña macro es directa y no requiere de confirmación por parte del usuario ejecutor.

No obstante, es importante volver a activar el sistema de alertas integrado en Excel al concluir los procesos que no requieran de la presencia de las alertas:


Application.DisplayAlerts = wdAlertsAll
La activacion de las alertas es importante para evitar posibles perdidas de información no deseadas tras la ejecución de nuestra macro, por lo que al final del proceso volvemos a activar las alertas con la siguiente instrucción:

No hay comentarios:

Publicar un comentario