30 Macros Útiles y Sencillas: Auto Eliminación de Hojas Después de Cerrar el Libro

Vamos a continuar con la eliminación de la información esta vez tratándose de un caso en el que nuestro archivo luego de ser abierto por un usuario diferente al nuestro, al momento de cerrarlo se detecte que es efectivamente de otro usuario y por tanto sea necesario borrar todas las hojas para mayor seguridad.

Lo primero que vamos a hacer es ingresar al Editor de Visual Basic y para ello desde la primera hoja utilizaremos la combinación de teclas Alt + F11:

Nos ubicamos en la ventana del Explorador de Proyectos que tenemos en el panel izquierdo de la ventana del Editor de Visual Basic y damos doble clic sobre el Objeto ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next

Usuario = Environ("USERNAME")

If Usuario <> "MiUsuario" Then

Application.DisplayAlerts = False

NroHojas = ActiveWorkbook.Sheets.Count

Sheets(NroHojas).Select

Sheets.Add After:=ActiveSheet

For N = 1 To NroHojas

Sheets(N).Delete

Next

ActiveWorkbook.Close savechanges:=True

Application.DisplayAlerts = True

End If

End Sub

La primea línea marca el principio de la macro y vamos a desglosar esta línea para entender un poco mejor esta macro:

Private Sub: significa Subrutina (Sub) o macro de acceso Privado (Private) y este acceso se aplica cuando se intenta ejecutar desde otra macro.

Workbook: Corresponde a la indicación de que la macro se aplicará sobre el libro de Excel que en ingles se denomina Workbook.

BeforeClose: Corresponde al evento antes de Cerrarse el libro, es decir, cuando se de la instrucción de cerrar el libro, se van a ejecutar unas líneas de código.

En resumen, esta primera línea se interpreta como macro que se ejecutará al momento de cerrarse el libro de trabajo.

La segunda línea On Error Resume Next, es el código con el cual se hace el manejo de los errores que se puedan presentar en la ejecución de la macro para que en caso de que se presente un error, la macro no se detenga abruptamente si no que se detenga su ejecución sin afectar la operación del libro de trabajo.

En la tercera línea estamos haciendo uso de una variable llamada “Usuario” en la cual estamos almacenando el nombre del Usuario del computador donde se está abriendo el archivo; esto lo logramos con el uso de la propiedad Environ, la cual nos permite obtener varias características del computador donde se esté trabajando y para obtener el nombre de usuario se usa colocando entre paréntesis y comillas el código “USERNAME”

En la cuarta línea estamos realizando una validación IF donde preguntamos Si, el nombre de usuario que almacenamos previamente en la variable Usuario es Diferente a “MiUsuario” (acá es donde debes colocar tu usuario) entonces pase a las siguientes líneas:

Application.DisplayAlerts = False -> Esta línea desactiva el mensaje de aprobación de eliminación de las hojas, de esta manera no se verá interrumpida la macro

NroHojas = ActiveWorkbook.Sheets.Count -> aplicación de una variable que se llama “NroHojas” y la utilizamos para almacenar en ella la cantidad de hojas que tiene el libro a través del método Contar (Count)

Sheets(NroHojas).Select -> Con este código lo que se logra es ubicarnos en la última hoja antes para que cuando se inserte una hoja nueva quede en la última posición. Porque vamos a insertar una hoja nueva si lo que deseamos es eliminar todas las hojas? Esto se debe a que un libro de Excel no puede funcionar sin no cuenta con por lo menos una sola hoja, asi que debemos insertar una hoja vacia para poder eliminar luego todas las demás hojas.

Sheets.Add After:=ActiveSheet -> Con este código se adiciona una hoja nueva

Estructura Repetitiva For -> sirve para ejecutar una acción N número de veces; en nuestro ejemplo se trata de repetir la acción de eliminar la cantidad de hojas que se contaron al principio de la macro

ActiveWorkbook.Close savechanges:=True  -> Esta línea es para cerrar el libro guardando cambio pero sin preguntar al usuario por esta opción.

Application.DisplayAlerts = True -> Esta línea activa cualquier mensaje de Excel los cuales habíamos desactivado al principio de la macro

La última línea marca el final de la macro con la instrucción End Sub

Prueben aplicando este código y recuerden reemplazar en la línea 4 en la instrucción IF donde dice “MiUsuario” por el usuario de sus máquinas para poder abrir el archivo solo por ustedes.

MÁS SOBRE

Gerencie.com en su correo.

Suscríbase y nosotros colocaremos en su bandeja de entrada la mejor información que generamos diariamente.

Siéntase libre de opinar

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc. Lo que no está permitido es insultar o escribir palabras ofensivas o soeces. Si lo hace, su comentario será rechazado por el sistema o será eliminado por el administrador. Por último, trate de no escribir en mayúscula sostenida, resulta muy difícil leerle.