Ya vimos en una entrega anterior como impedir que se inserten hojas a nuestro libro de trabajo, ahora vamos a ver como impedir que se eliminen hojas que ya tenemos.
Impedir que un usuario elimine hojas en Excel.
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 y pegamos el siguiente código:
Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
ThisWorkbook.Protect Structure:=True
MsgBox "No es posible eliminar la hoja"
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 (Workbook).
- SheetBeforeDelete: Corresponde al evento Antes de Eliminar una Hoja del libro, es decir, cuando se intente eliminar una hoja del libro de trabajo, antes de ejecutar dicha acción, vamos a aplicar unas líneas de código.
En resumen, esta primera línea se interpreta como macro que se ejecutará antes de poder eliminar una hoja del libro de trabajo.
La segunda línea es la instrucción con la cual estamos protegiendo la estructura de todo el archivo con lo cual se impide que se eliminen hojas
La tercera línea es el código con el cual se esta enviando un mensaje informando la imposibilidad de eliminar la hoja del libro de trabajo.
La última línea End Sub marca el final de la macro
Ahora vamos a Excel y probemos a eliminar una hoja del libro de trabajo:
diciembre 14th, 2019 a las 10:04 pm
Buenas noches, agradecido por el contenido, me pueden por favor indicar de que manera se vuelve a activar los menús de copiar, eliminar las hojas que previamente se desactivaron
Gracias
enero 27th, 2021 a las 1:56 am
AMIGO TIENES LAS SOLUCION, YO LO ACTIVE Y NO SE COM QUITARLO
diciembre 9th, 2021 a las 5:28 pm
creando una macro que contenga la orden:
ThisWorkbook.Protect Structure:=false
si alguien intenta eliminar una hoja solo ejecuta ésta orden en una macro y a seguir trabajando.
Se puede proteger una hoja en concreto del libro y el resto dejarlo libre si realizas la explicación de Oscar en una “hoja” en vez de en “ThisWorkbook”, gracias a su explicación he conseguido proteger 3 hojas del libro y dejo el resto del libro que funcione normalmente.
septiembre 28th, 2021 a las 8:24 am
Gracias por su ayuda