Saludos, requiero una macro que cada vez que cierre un libro de excel, me bloquee cada hoja con clave distinta

Necesito una macro que bloque con contraseña diferente cada hoja de una libro de excel; pero cada vez que cierro el libro.

2 Respuestas

Respuesta
1

Tengo una; pero es inestable y de paso no puedo usar el auto filtro cuando esta bloqueada

Respuesta
1

Colocar una contraseña distinta a cada hoja seria un dolor de cabeza... ya que no sabrias la clave jeje..

Aqui te dejo una macro para un libro de 4 hojas.. donde en la 4ta hoja estan las pass

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim NumHojas As Integer
    Dim I, Pass As Integer
    Dim H1 As Worksheet
Salir = MsgBox("¿Está seguro de que quiere salir?", vbOKCancel)
    Set H1 = Sheets("HojaPass") ' esta es la hoja donde estan las contraseñas (A1 , A2, A3)
    a = 1
    If Salir = vbOK Then
        NumHojas = Worksheets.Count
            For I = 1 To NumHojas
                If I = 4 Then GoTo Sigue
                Sheets(I).Select
                ActiveSheet.Protect H1.Cells(a, 1).Value
                a = a + 1
            Next I
    Else
        Cancel = True
    End If
Sigue:
    ThisWorkbook.Save
End Sub

con consulta si realmente deseas cerrar la hoja

Como puedes ver es bien sencillo... puedes agregar mas hojas y mas claves solo habria que modificarlo un poquito ...

Esta macro tienes que colocarla dentro de la hoja "ThisWorkBook"

Muchas gracias voy a probarla y te cuento. Lo que no entiendo es porque la cuarta hoja tiene las contraseña su precisamente no quiero que las vean, ya que cada hoja la maneja un usuario distinto. 

Te explico que es un libro que trabajan varias personas y lo consultan varios. Cada persona trabaja una hoja de forma individual en un mismo libro. No me interesa que vean la contraseña del otro. gracias por tu ayuda

Que hago aquí? disculpa, no soy tan ducha con visual

 Set H1 = Sheets("HojaPass") ' esta es la hoja donde estan las contraseñas (A1 , A2, A3)
    a = 1

Te entendí que querías que al cerrar el libro que todas las hojas se bloqueen con diferentes clavés.. para ello hay que asignar en las macros las claves o como en mi ejemplo hacer una hoja con los datos y mantener dicha hoja oculta

Otra opción que se puede hacer es dejar una hoja de bienvenida y pedir la contraseña del usuario.. dependiendo de los datos que se ingresan muestre una hoja u otra... Para esto también se necesita tener una hoja oculta con los datos u las contraseñas en la macro

¡Gracias! 

Te cree un archivo para que veas como es para hacer una sesion en excel con distintas hojas, te deje los usuarios a la vista, obvio hay que ocultarlos jeje es solo para que veas como seria.. te lo iba a enviar ayer pero se me complico jeje... saludos espero te sirva...

DESCARGAR ARCHIVO:: SESION USUARIOS

Un bloqueo normal de una hoja desde VBA seria asi

Activesheet. Protect "Clave" ' desde la misma hoja
Sheets("hoja1"). Protect "clave" 'desde otra hoja

Para usar los filtros debes dejarlos hablitados esta opcion se encuentra al final del listado si bloqueas la hoja de forma manual.. desde VBA serias asi

 ActiveSheet.Protect "hola", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True  'Desde la misma hoja
 Sheets("hoja1").Protect "hola", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True  'Desde otra hoja

Disculpa dos preguntas:

1. ¿Qué debo colocar en "hola"?

2. ¿Desde VBA debo colocar esto en cada hoja donde quiero habilitar los filtros?

En donde dice " hola" es la clave que tu le daras a la hoja, esta pequeña linea seria la encargada de bloquear tu hoja y dejar los filtros habilitados, hiria al final de tu macro antes del END SUB

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas