Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como PROTEGER HOJAS Excel PERMITIR Distintas OPCIONES BLOQUEAR Desbloquear CELDAS Excel VBA #523

Proteger desproteger hojas excel - bloquear desbloquear celdas - proteger y permitir opciones

Proteguer libro de Excel y permitir ciertas opciones – Bloquear y desbloquear celdas

En este post se verá como proteger una hoja de Excel y permitir ciertas opciones, es decir la hoja de Excel se protegerá ya sea con o sin contraseña, pero se permitirá al usuario realizar ciertas acciones en la hoja protegida.

Aprende Excel en forma rápido y fácil, hazlo en forma fácil y sencilla, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Proteger Hoja de Excel con Clave y Otorgar Ciertos permisos en hojas protegidas

La macro de Excel permite proteger una hoja de cálculo, pero a su vez concede ciertos permisos a los usuarios, es decir si bien la hoja está protegida al dar permisos los usuarios pueden realizar ciertas acciones en hojas protegidas.

Proteger una hojas de Excel es posible hacerlo con password o sin password, la diferencia está en que cualquier persona no autorizada puede desbloquear el libro si no se asignó password, ya que para desbloquear solo basta ir a la pestaña «Inicio», menú «Formatos» y luego seleccionar desproteger hoja.

Al proteger hojas en Excel se puede establecer o conceder los siguientes permisos:

Permiso para «SELECCIONAR CELDAS BLOQUEADAS»

Permiso para «SELECCIONAR CELDAS DESBLOQUEADAS»

Permiso para «DAR FORMATO A CELDAS»

Permiso para «DAR FORMATO A COLUMNAS»

Permiso para «DAR FORMATO A FILAS»

Permiso para «INSERTAR FILAS»

Permiso para «INSERTAR COLUMNAS»

Permiso para «INSERTAR HIPERVINCULOS»

Permiso para «ELIMINAR COLUMNAS»

Permiso para «ELIMINAR FILAS»

Permiso para «ORDENAR»

Permiso para «USAR TABLAS DINÁMICAS Y GRÁFICOS DINÁMICOS»

Permiso para «MODIFICAR OBJETOS»

Permiso para «MODIFICAR ESCENARIOS»

Siempre al proteger una hoja se protege el contenido de la misma, por lo que estos permisos solo son útiles en celdas desbloqueadas.

En este ejemplo en cada uno de los botones se agrega un código para ir viendo que hace cada uno de ellos se debe presionar el botón correspondiente, para desbloquear la hoja se debe presionar el botón que lleva ese titulo

COMO BLOQUEAR Y DESBLOQUEAR CELDAS EN EXCEL

Cuando se protege una hoja en Excel, solo funcionará dicha protección, es decir se evitará que un usuario realice modificaciones en la hoja, solo en el único caso que las celdas estén bloqueadas.

En Excel todas las celdas de la hojas están bloqueadas por defecto, por ello al proteger la hoja inmediatamente no se pueden realizar absolutamente nada, salvo que se hayan otorgado permisos como los mencionados anteriormente, pero si no, no se podrá realizar nada en la hoja protegida.

Esto es posible, porque las celdas están bloqueadas por defecto, pero que sucede si la celdas estuvieran desbloqueadas, en este caso la protección de las celdas no tendría ningún efecto, por el simple hecho de que las celdas están desbloqueadas y ello permite realizar modificaciones en celdas a pesar que la hoja está bloqueada.

En base a lo mencionado, se puede entonces desbloquear ciertas celdas para permitir que se ingresen o se modifiquen datos y luego proteger la hoja obteniendo como resultado que el usuario podrá modificar solo ciertas, esto es muy útil cuando hay formulas que si son modificadas por error dañan la hoja de Excel y hacen la hoja de cálculos inútil o simplemente si no se quiere el el usuario modifique las estructura y formatos de la hoja.

Para bloquear celdas en Excel se debe en la pestaña «Inicio» hacer click en el menú «Número» y luego ira a la pestaña proteger hoja, como se muestra en la imagen siguiente.

bloquear desbloquear celdas en excel

Pero lo que nos interesa a nosotros que también se puede realizar con macros, es decir podemos establecer una instrucción para que proteja una hoja y desbloquee ciertas celdas o rangos para permitir trabajar en la hoja protegida, adelanto que el código para desbloquear celdas es el siguiente:

Range(«A8:D11»).Locked = False

y para bloquear el rango A8;D11 es el siguiente

Range(«A8:D11»).Locked = True

Explicación de la macro de Excel para proteger hojas y conceder permisos – Para Bloquear y Desbloquear Celdas

Para PROTEGER una hoja totalmente SIN PASSWORD, es decir no se puede hacer nada en ella, se debe usar el código:

ActiveSheet.Protect

 

Para DESPROTEGER una hoja SIN PASSWORD, se usa el código:

ActiveSheet.Unprotect

 

Para PROTEGER una hoja totalmente CON PASSWORD,  el código es:

ActiveSheet.Protect Password:=123

 

Para DESPROTEGER una hoja CON PASSWORD, se usa el código

ActiveSheet.Unprotect Password:=123

 

Establecer que no pueda ser seleccionada ninguna celda tanto bloqueada como desbloqueada

ActiveSheet.EnableSelection = xlNoSelection

 

PERMITIR que se pueda SELECCIONAR las CELDAS BLOQUEADAS

ActiveSheet.EnableSelection = xlUnlockedCells

 

PERMITIR que se pueda aplicar FORMATO a CELDAS

ActiveSheet.Protect AllowFormattingCells:=True

PERMITIR que se pueda aplicar FORMATO a COLUMNAS

ActiveSheet.Protect AllowFormattingColumns:=True

 

PERMITIR que se pueda aplicar FORMATO a FILAS

ActiveSheet.Protect AllowFormattingRows:=True

 

PERMITIR que se pueda INSERTAR COLUMNAS

ActiveSheet.Protect AllowInsertingColumns:=True

 

PERMITIR que se pueda INSERTAR FILAS

ActiveSheet.Protect AllowInsertingRows:=True

 

PERMITIR que se pueda INSERTAR HYPERLINKS

ActiveSheet.Protect AllowInsertingHyperlinks:=True

 

PERMITIR que se pueda ELIMINAR COLUMNAS

ActiveSheet.Protect AllowDeletingColumns:=True

 

PERMITIR que se pueda ELIMINAR FILAS

ActiveSheet.Protect AllowInsertingRows:=True

 

PERMITIR que se pueda ELIMINAR FILAS

ActiveSheet.Protect AllowDeletingRows:=True

 

PERMITIR que se pueda ORDENAR en hoja protegida, pero celdas desbloqueadas solamente

ActiveSheet.Protect AllowSorting:=True

 

PERMITIR que se pueda USAR AUTOFILTRO en hoja protegida, pero celdas desbloqueadas solamente

ActiveSheet.Protect AllowFiltering:=True

 

PERMITIR que se pueda USAR TABLAS DINÁMICAS en hoja protegida, pero celdas desbloqueadas solamente

ActiveSheet.Protect AllowUsingPivotTables:=True

 

PERMITIR que se pueda MODIFICAR OBJETOS, en hoja protegidas, pero celdas desbloqueadas

ActiveSheet.Protect DrawingObjects:=True

 

PERMITIR que se pueda MODIFICAR  ESCENARIOS, en hoja protegidas, pero celdas desbloqueadas

ActiveSheet.Protect Scenarios:=True

 

Si se quiere BLOQUEAR una CELDA o RANGO se debe utilizar el código:
Range(«A8»).Locked = True
Range(«A8:D11»).Locked = True

 

Si se quiere DESBLOQUEAR una CELDA o RANGO se debe utilizar el código:
Range(«A8»).Locked = False
Range(«A8:D11»).Locked = False

En el caso que se quiera proteger algunas cosas  y permitir otras el código que se utiliza es el siguiente estableciendo en «true» para permitir y «false» para lo contrario, el código es el siguiente:


ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True


Se debe tener en cuenta que cuando se protege una hoja siempre se protege por defecto el contenido de la misma por más que se concedan ciertos permisos, es por ello que algunos permisos solo tienen efectos sobre celdas desbloqueadas como el uso de tablas dinámicas o autofiltro entre otros.

Descarga el Libro usado para Proteger Hojas con Ciertos Permisos

Descarga el libro de Excel de este ejemplo desde el final del post, el mismo es totalmente gratuito y su uso es libre, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Código Formulario que se ingresa en un Modulo

Sub Password()
ActiveSheet.Protect Password:=123
MsgBox («Se protegió la hoja no se permite realizar nada en la hoja de Excel, password= 123»), vbInformation, «macrosenexcel.com»
End Sub

Sub ProtegerTodo()
ActiveSheet.Protect
MsgBox («Se protegió la hoja no se permite realizar nada en la hoja de Excel»), vbInformation, «macrosenexcel.com»
End Sub

Sub Desprotege()
ActiveSheet.Unprotect Password:=123
ActiveSheet.EnableSelection = xlSelection
MsgBox («Hoja Desprotegida»), vbInformation, «macrosenexcel.com»
End Sub
Sub Objetos()
ActiveSheet.Protect DrawingObjects:=True
MsgBox («Se permite modificar los objetos»), vbInformation, «macrosenexcel.com»
End Sub

Sub Scenarios()
ActiveSheet.Protect Scenarios:=True
MsgBox («Se permite modificar los escenarios»), vbInformation, «macrosenexcel.com»
End Sub

Sub Formatoceldas()
ActiveSheet.Protect AllowFormattingCells:=True
MsgBox («Se permite modificar formato celdas»), vbInformation, «macrosenexcel.com»
End Sub

Sub FormatoColumnas()
ActiveSheet.Protect AllowFormattingColumns:=True
MsgBox («Se permite modificar formato columnas»), vbInformation, «macrosenexcel.com»
End Sub

Sub FormatoFilas()
ActiveSheet.Protect AllowFormattingRows:=True
MsgBox («Se permite modificar formato filas»), vbInformation, «macrosenexcel.com»
End Sub

Sub InsertarColumnas()
ActiveSheet.Protect AllowInsertingColumns:=True
MsgBox («Se permite modificar el insertar columnas»), vbInformation, «macrosenexcel.com»
End Sub

Sub InsertarFilas()
ActiveSheet.Protect AllowInsertingRows:=True
MsgBox («Se permite modificar el insertar filas»), vbInformation, «macrosenexcel.com»
End Sub

Sub InsertarHyperlink()
ActiveSheet.Protect AllowInsertingHyperlinks:=True
MsgBox («Se permite modificar el insertar hyperlink»), vbInformation, «macrosenexcel.com»
End Sub

Sub EliminarColumnas()
ActiveSheet.Protect AllowDeletingColumns:=True
MsgBox («Se permite modificar el eliminar columnas»), vbInformation, «macrosenexcel.com»
End Sub

Sub EliminarFilas()
ActiveSheet.Protect AllowDeletingRows:=True
MsgBox («Se permite modificar el eliminar filas»), vbInformation, «macrosenexcel.com»
End Sub

Sub Ordenar()
ActiveSheet.Protect AllowSorting:=True
MsgBox («Se permite modificar el ordenar datos»), vbInformation, «macrosenexcel.com»
End Sub

Sub Autofiltro()
ActiveSheet.Protect AllowFiltering:=True
MsgBox («Se permite modificar uso de autofiltro»), vbInformation, «macrosenexcel.com»
End Sub

Sub TablasDinamicas()
ActiveSheet.Protect AllowUsingPivotTables:=True
MsgBox («Se permite modificar las tablas dinámicas»), vbInformation, «macrosenexcel.com»
End Sub

Sub PermiteSeleccion()
ActiveSheet.Protect
ActiveSheet.EnableSelection = xlNoSelection
MsgBox («Se protegió hoja y NO puede seleccionar celdas»), vbInformation, «macrosenexcel.com»
End Sub

Sub PermiteSeleccionCeldasBloqueadas()
ActiveSheet.Protect
ActiveSheet.EnableSelection = xlUnlockedCells
MsgBox («Se protegió hoja y se puede seleccionar solo celdas desbloqueadas»), vbInformation, «macrosenexcel.com»
End Sub

Sub BloqueaCelda()
ActiveSheet.Unprotect Password:=123
Range(«A8:D11»).Locked = True
ActiveSheet.Protect Password:=123
End Sub
Sub DesbloqueaCelda()
ActiveSheet.Unprotect Password:=123
Range(«A8:D11»).Locked = False
ActiveSheet.Protect Password:=123
End Sub

Sub Protegetodo()
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
no rating based on 0 votes