Macro de usuario y contraseña

Necesito un favorsote.
Lo que pasa es que quiero una macro donde al introducir su nombre de usuario y contraseña les de acceso al libro de excel.
Me gustaría que esta ontraseñas estuvieran en una hoja de excel y saber cuando entro uno de ellos.
¿Se puede?

2 Respuestas

Respuesta
1
Q+ Kakashi,
Primero asegurate de tener dos hojas al menos en tu libro de trabajo.
Ejemplo Hoja1 y Hoja2
- Luego abre VisualBasic (ALT+F11)
- En el panel izquierdo has doble Click en ThisWorkbook
- Allí copias el siguiente código:
Private Sub Workbook_Open()
MsgBox ("Hola Kakashi, te saluda Richard Chacón") ' Muestra un saludo al abrir el libro
Worksheets("hoja1").Range("A1").Value = 1 'Genera un valor en una celda al abrir
Application.CommandBars.FindControl(ID:=30029).Enabled = True 'Inhabilita Desproteger
'Para que funcione, se debe cambiar el True por False
UserForm1.Show ' Muestra el User Form para solicitar Usuario y Clave
End Sub

-  Ahora crea el priemer UserForm (UserForm1). Menú Insertar-UserForm
- Le Asignas un TextBox y un Botón de Aceptar, al que le copiaras este código:
Private Sub CommandButton1_Click()
Dim Clave1, Usuario
Clave2 = TextBox1.Value
Range("Clave2") = Clave1
Usuario = Range("ElUsuario").Value
If Usuario <> "Invalido" Then
ActiveSheet.Unprotect "123"
Unload Me
Else
MsgBox ("Clave inválida")
End If
End Sub

-Luego creas el 2do UserForm al que le asignas otro TextBox y un Botón de Aceptar con el siguiente código:
Private Sub CommandButton1_Click()
Dim Clave
Clave = TextBox2.Value
If Clave = 1234 Then
Unload Me
UserForm1.Show
Else
MsgBox ("Clave inválida")
End If
End Sub

-Luego en la Celda A1 de la Hoja2 escribes "El Usuariode hoy:"
- En C1 de la Hoja2 escribes la siguiente Fórmula: =SI(ESERROR(BUSCARV(D1;Usuarios;1));"Invalido";BUSCARV(D1;Usuarios;1))
- A D1 de la Hoja2 le asignas un Nombre de Rango llamado Clave. Se hace por Insertar Nombre Definir
- Desde A2 hacia abajo los Usuarios
- Desde B2 hacia abajo las Claves de los Usuarios
- Desde C2 hacia abajo los ID de los Usuarios, ejm RCORRALES
Prueba con esto y me avisas..
Saludos,
RCh.
Hola, Gracias por tu ayuda.
Solo una duda, lo que pasa es que cuando lo corro me marca error en Range osea en.
Range("clave2")=Clave1 y de ahi en adelante no corre.
Y otra cuando se llama la primer userform, ¿ahí qué se captura lo de rango (a1)?.
Gracias y saludos
Q+ Kaka,
Creo que mejor te mando un ejemplo... dame un correo!
[email protected]
Acá tienes de todos modos los códigos para el UF1:
Private Sub CommandButton1_Click()
Dim Clave1, Usuario
Clave1 = TextBox2.Value
Range("Clave1") = Clave1
Usuario = Range("ElUsuario").Value
If Usuario <> "Invalido" Then
ActiveSheet.Unprotect "123"
Unload Me
UserForm2.Show
Else
MsgBox ("Clave inválida")
End If
End Sub
Private Sub UserForm_Activate()
TextBox2.SetFocus
End Sub
Private Sub UserForm_QueryClose _
(Cancel As Integer, CloseMode As Integer)
' Prevents use of the Close button
If CloseMode = vbFormControlMenu Then
MsgBox "Sin viveza.... use su Usuario y Clave"
Cancel = True
End If
End Sub

Para el UF2:
Private Sub CommandButton1_Click()
Dim Clave2
Clave2 = TextBox1.Value
If Clave2 = 1234 Then
Unload Me
Else
MsgBox ("Clave inválida")
End If
End Sub
Private Sub UserForm_Activate()
TextBox1.SetFocus
End Sub
Private Sub UserForm_QueryClose _
(Cancel As Integer, CloseMode As Integer)
' Previene usar el Botón de Cerrar
If CloseMode = vbFormControlMenu Then
MsgBox "Sin viveza.... use su Usuario y Clave"
Cancel = True
End If
End Sub

Para el Módulo:
Sub LaDesprotejo()
UserForm1.Show
'Unload Me
End Sub

Y para ThisWorkbook:
Private Sub Workbook_Open()
MsgBox ("Hola Kakashi, te saluda Richard Chacón") ' Muestra un saludo al abrir el libro
Worksheets("hoja1").Range("A1").Value = 1 'Genera un valor en una celda
ThisWorkbook.Application.CommandBars.FindControl(ID:=30029).Enabled = True
UserForm1.Show
End Sub

Recuerda crear y dar nombre al rango de Usuarios en la Hoja2
Asignar el nombre ElUsuario a una celda y ponerle esta fórmula:
=SI(ESERROR(BUSCARV(D1;Usuarios;1));"Invalido";BUSCARV(D1;Usuarios;1))
Asignarle a una Celda (D1) el nombre Clave1
Respuesta
1
Para que funciones, debes tener una hoja llamada "Usuarios", un userform1, dos textbox llamados user y pass dos botones, Ok y Cierra y pegar este código en userform:
'En el evento Workbook_open de Thisworkbook debes poner este codigo
userform1.show
Private Sub Cierra_Click()
If MsgBox("Salir de Excel?", vbYesNo) = vbYes Then
    Application.Quit
    Unload Me
    Else
    Unload Me
End If
End Sub
Private Sub Ok_Click()
Application.ScreenUpdating = False
Sheets("Usuarios").Visible = True
Sheets("Usuarios").Select
Range("A2", Range("A65536").End(xlUp)).Select
If Selection.Find(User.Text, , , xlWhole) Is Nothing Then
    GoTo NoEncontrado
    Else
    Selection.Find(User.Text, , , xlWhole).Select
'MsgBox User & "  -  " & Pass
If ActiveCell.Value = User And ActiveCell.Offset(0, 1).Value = Pass Then
    MsgBox "Bienvenido " & User
    Unload UserForm1
'   Pone en la barra de Excel de arriba el nombre del Usuario que entró
Application.Caption = User
    Else
NoEncontrado:
    MsgBox "Nombre de Usuario o Contraseña Incorrecta, Verifique el uso correcto de Mayusculas y Minusculas"
    User = Empty
    Pass = Empty
    User.SetFocus
    Sheets("acceso").Select
End If
End If
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Prevent user from closing with the Close box in the title bar.
    Cancel = False
    If CloseMode <> 1 Then Cancel = True
    UserForm1.Caption = "Debe usar el boton Cerrar del Formulario"
End Sub
Cualquier duda me dices.
Hola de nuevo.
Ya lo corrí y me sale un problemita, si se ve en cuanto abro el archivo, pero a la hora de que le doy al botón para que me de el acceso al archivo se queda plasmado y no me deja modificarlo.
¿ise algo mal?
Gracias y saludos.
Tal vez no pusiste esto:
<span style="border-collapse: collapse; color: #4a4a4a; font-family: Arial; line-height: 17px;">Application.ScreenUpdating = True </span>
Es para regresar a la normalidad la "vista" de los movimientos a la hoja de calculo, o mandame tu archivo para checarlo
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas