VBA Proteger / Desproteger hojas de trabajo

Este tutorial le enseñará todo sobre la protección de hojas de trabajo de Excel en VBA: cómo proteger o desproteger hojas de trabajo en Excel.

Desproteger hoja de cálculo de Excel sin contraseña

Para desproteger una hoja de trabajo que no está protegida con contraseña, use esta simple línea de código:

1 Hojas de trabajo ("Hoja1"). Desproteger

Desproteger hoja de cálculo de Excel con contraseña

Para desproteger una hoja de trabajo que está protegida con contraseña, también debe ingresar la contraseña:

1 Hojas de trabajo ("Hoja1"). Desproteger "Contraseña"

Desproteger hoja - Contraseña perdida

Para desproteger una hoja de trabajo sin conocer la contraseña, debe utilizar un complemento de recuperación de contraseña.

Proteger hojas de trabajo

La protección de la hoja de trabajo le permite bloquear ciertos aspectos de la hoja para que no se puedan editar.

Este menú se encuentra en Inicio> Formato> Proteger hoja o haciendo clic con el botón derecho en el nombre de la pestaña Hoja:

Por lo general, esto se usa para proteger las celdas "bloqueadas" de la edición, permitiendo solo al usuario final editar ciertas celdas.

Puede bloquear celdas seleccionándolas y abriendo el Pestaña de protección de El Menú de formato de celda (CTRL + 1).

También puede evitar que el usuario cambie la estructura de la hoja de trabajo (insertando, eliminando o cambiando el tamaño de Filas y Columnas), o que interactúe con Autofiltros, y mucho más.

Proteger la hoja de trabajo: sin contraseña

Es posible que desee proteger una hoja de trabajo sin ingresar una contraseña. Esto evitará cambios accidentales en la hoja de trabajo, al tiempo que le da al usuario acceso para realizar cambios si lo desea.

1 Hojas de trabajo ("Hoja1"). Proteger

Proteger hoja de trabajo - Proteger con contraseña

1 Hojas de trabajo ("Hoja1"). Proteger "Contraseña"

Proteger la configuración de la hoja de trabajo

Los ejemplos anteriores protegerán las hojas de trabajo con la configuración de protección estándar. En su lugar, es posible que desee personalizar lo que está protegido:

12345 Hojas de trabajo ("Hoja1"). Contraseña de protección: = strPassword, DrawingObjects: = True, Contents: = True, Escenarios: = True, _UserInterfaceOnly: = True, AllowFormattingCells: = False, AllowFormattingColumns: = False, _AllowFormattingRows: = False, AllowInsertingColumns: = False, AllowInsertingRows: = False, _AllowInsertingHyperlinks: = False, AllowDeletingColumns: = False, AllowDeletingRows: = False, _AllowSorting: = False, AllowFiltering: = False, AllowUsingPivotTables: = False

En lugar de usar la sintaxis anterior, recomiendo grabar una macro con la configuración deseada (elegida con el menú Protección de hoja de trabajo anterior) y copiar + pegar el código grabado en su procedimiento.

Proteger hoja: permitir que VBA realice cambios

De forma predeterminada, cuando protege una hoja, la protección se aplica a las operaciones de VBA además de las acciones del usuario. Si VBA intenta modificar una celda bloqueada, verá un error de tiempo de ejecución 1004. Para evitar esto, puede desproteger y volver a proteger sus hojas de trabajo siempre que VBA necesite interactuar con ellas:

123456789 Sub Edit_Sheet1 ()'Desproteger Hoja1Hojas de trabajo ("Hoja1"). Desproteger'Hacer algo en la hoja 1'Reproteger Hoja1Hojas de trabajo ("Hoja1"). ProtegerEnd Sub

Sin embargo, es fácil olvidarse de desproteger y / o volver a proteger sus hojas de trabajo. Esto puede aumentar la probabilidad de un error de codificación.

En su lugar, puede utilizar la configuración UserInterFaceOnly. Cuando es VERDADERO, las hojas de trabajo SOLO estarán protegidas de los usuarios, NO de VBA.Su código VBA será libre de editar la hoja de trabajo como si estuviera desbloqueada.

Dos puntos importantes sobre UserInterFaceOnly:

  • Esta configuración no está disponible en el menú Protección de la hoja de trabajo (que se muestra arriba). Es una configuración que debe definirse en VBA.
  • La configuración no se guarda cuando cierra un libro. Debe redefinirse cada vez que se abre un libro.

Entonces, para establecer la propiedad UserInterFaceOnly, debe colocar el siguiente procedimiento de evento Workbook_Open en el módulo ThisWorkbook:

1234567 Private Sub Workbook_Open ()Dim ws como hoja de trabajoPara cada w en este libro de trabajo.ws.Protect UserInterfaceOnly: = VerdaderoSiguiente wsEnd Sub

Workbook_Open es un procedimiento de evento especial que se ejecutará cada vez que se abra el libro. Debe colocarse en el módulo ThisWorkbook. Alternativamente, puede usar el procedimiento de evento Auto_Open (no cubierto aquí).

Desproteger la macro de todas las hojas

Esta macro desprotegerá todas las hojas de un libro de trabajo:

123456789 'Desproteger todas las hojas de trabajoSub UnProtectAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojas de trabajows. Desproteger "contraseña"Siguiente wsEnd Sub

Proteger todas las hojas macro

Esta macro protegerá todas las hojas de un libro de trabajo:

123456789 'Proteger todas las hojas de trabajoSub ProtectAllSheets ()Dim ws como hoja de trabajoPara cada ws en hojas de trabajows.Protect "contraseña"Siguiente wsEnd Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave