¿Cómo establecer contraseñas para proteger hojas de cálculo individuales de distintos usuarios en Excel?
En Excel, puede establecer contraseñas diferentes para distintas hojas de cálculo. Esto significa que un usuario podría realizar cambios en una hoja con una contraseña, y otro usuario podría usar una contraseña distinta para modificar otra hoja. Sin embargo, a veces solo desea que cada usuario pueda ver y acceder únicamente a su propia hoja. ¿Es posible resolver esto en Excel?
Para proteger cada hoja individualmente y limitar el acceso a las hojas según el usuario, aplique el siguiente código VBA:
1. Abra un libro de trabajo nuevo y cree una hoja llamada «Main», tal como se muestra en la captura de pantalla:

2. A continuación, pulse las teclas «Alt» + «F11» para abrir la ventana de «Microsoft Visual Basic para Aplicaciones», haga doble clic en «ThisWorkbook» del panel izquierdo «Proyecto - VBAProject» para abrir un módulo de código en blanco y, a continuación, copie y pegue el siguiente código VBA en la ventana de código (consulte la captura de pantalla):
Código VBA: Establecer contraseñas para proteger hojas individuales por usuario
Option Explicit
Dim gUserName As String
Dim gUserPass As String
Private Sub Workbook_Open()
'Updateby ExtendOffice
Dim xWShs As Sheets
Dim xWSh As Worksheet
Dim xUserName As String
Dim xPass As String
Dim xBolH As Boolean
GTINPUT:
xUserName = InputBox("Enter the user name")
If TypeName(xUserName) = "String" Then
If xUserName = "" Then
Exit Sub
End If
End If
xUserName = LCase(xUserName)
xPass = InputBox("User name:" & xUserName & Chr(13) & Chr(10) & "Enter the password:")
If TypeName(xPass) = "String" Then
If xPass = "" Then
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End If
Else
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End If
Set xWShs = Worksheets
xBolH = False
For Each xWSh In Worksheets
If xWSh.Name = xUserName Then
xBolH = True
Exit For
End If
Next
If xBolH Then
Set xWSh = xWShs(xUserName)
On Error GoTo GTINPUT2
xWSh.Unprotect (xPass)
xWSh.Visible = True
xWSh.Activate
Else
Set xWSh = xWShs.Add
xWSh.Name = xUserName
xWSh.Activate
End If
gUserName = xUserName
gUserPass = xPass
Exit Sub
GTINPUT2:
MsgBox "The password is incorrect, please enter the user name and password again."
GoTo GTINPUT
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim xWSh As Worksheet
On Error Resume Next
Set xWSh = Worksheets(gUserName)
xWSh.Protect Password:=gUserPass, 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
For Each xWSh In Worksheets
If xWSh.Name <> "Main" Then
xWSh.Visible = xlSheetVeryHidden
End If
Next xWSh
ActiveWorkbook.Save
End Sub

3. A continuación, coloque el cursor al final del script «Private Sub Workbook_Open()» y pulse la tecla «F5» para ejecutarlo. Aparecerá un cuadro de diálogo en el que deberá introducir el nombre de usuario para el que desea crear una hoja; consulte la captura de pantalla:

4. Luego, haga clic en el botón «Aceptar» y, en el cuadro de diálogo siguiente, introduzca una contraseña para proteger esta hoja (consulte la captura de pantalla):

5. Siga haciendo clic en el botón «Aceptar» y se creará al instante una hoja nueva con el nombre de usuario. Podrá introducir los datos necesarios para ese usuario. Consulte la captura de pantalla:

6. Repita los pasos anteriores (3–5) para crear hojas adicionales, una a una, según sus necesidades.
7. Tras crear las hojas, guarde el libro de trabajo actual haciendo clic en «Archivo» > «Guardar como». En el cuadro de diálogo «Guardar como», especifique un nombre de archivo y seleccione el formato «Libro de Excel habilitado para macros (*.xlsm)» en la lista desplegable «Tipo de archivo», tal como se muestra en la captura de pantalla:

8. A continuación, haga clic en el botón Guardar para almacenar este archivo.
9. Después, cierre el libro y vuelva a abrirlo. A continuación, haga clic en «Habilitar contenido» en la parte superior de la Barra de fórmulas para activar el código.

10. Ahora aparecerá un cuadro de diálogo que le pedirá introducir el nombre de usuario y la contraseña para abrir la hoja asignada específicamente a ese usuario.
11. Por último, al enviar este libro a otros usuarios, debe facilitar al destinatario el nombre de usuario y la contraseña correspondientes, de modo que solo puedan abrir y editar sus propias hojas, sin autorización para acceder a otras hojas de cálculo.
Las mejores herramientas de productividad para Office
Potencie sus habilidades en Excel con Kutools para Excel y experimente una eficiencia como nunca antes.Kutools para Excel ofrece más de 300 funciones avanzadas para aumentar su productividad y Ahorrar tiempo.Haga clic aquí para obtener la función que más necesita...
Office Tab aporta una interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil
- Active la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abra y cree varios documentos en nuevas pestañas dentro de la misma ventana, en lugar de hacerlo en ventanas separadas.
- ¡Aumente su productividad en un 50 % y elimine cientos de clics del ratón cada día!
Todos los complementos de Kutools en un solo instalador.
Kutools for Office es la suite que incluye complementos para Excel, Word, Outlook y PowerPoint, además de Office Tab Pro, ideal para equipos que trabajan en distintas aplicaciones de Office.
- Suite integral— complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
- Un instalador, una licencia— configuración en minutos (compatible con MSI)
- Rendimiento mejorado en conjunto— productividad optimizada en todas las aplicaciones de Office
- Prueba gratuita de 30 días con todas las funciones— sin registro ni tarjeta de crédito
- La mejor relación calidad-precio— ahorre frente a la compra individual de complementos