Sunteți pe pagina 1din 6

Macro de usuario y contrasea

Necesito un favorsote.
Lo que pasa es que quiero una macro donde al introducir su nombre de usuario y contrasea
les de acceso al libro de excel.
Me gustara que esta ontraseas estuvieran en una hoja de excel y saber cuando entro uno de
ellos.
Se puede?
Seguir Responder Ms info
Compartir

2 respuestas
Respuesta de patanrisitas
1

patanrisitas, Tengo experiencia en macros, funciones avanzadas y algo de...


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 cdigo:
Private Sub Workbook_Open()
MsgBox ("Hola Kakashi, te saluda Richard Chacn") ' 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 Botn de Aceptar, al que le copiaras este cdigo:
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 invlida")
End If
End Sub
-Luego creas el 2do UserForm al que le asignas otro TextBox y un Botn de Aceptar con el
siguiente cdigo:
Private Sub CommandButton1_Click()
Dim Clave
Clave = TextBox2.Value
If Clave = 1234 Then
Unload Me
UserForm1.Show
Else
MsgBox ("Clave invlida")
End If
End Sub
-Luego en la Celda A1 de la Hoja2 escribes "El Usuariode hoy:"
- En C1 de la Hoja2 escribes la siguiente
Frmula:=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.
el 22 ago. 08

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
el 25 ago. 08

Q+ Kaka,
Creo que mejor te mando un ejemplo... dame un correo!
richardchaconb@gmail.com

Ac tienes de todos modos los cdigos 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 invlida")
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 invlida")
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 Botn de Cerrar
If CloseMode = vbFormControlMenu Then
MsgBox "Sin viveza.... use su Usuario y Clave"

Cancel = True
End If
End Sub
Para el Mdulo:
Sub LaDesprotejo()
UserForm1.Show
'Unload Me
End Sub
Y para ThisWorkbook:
Private Sub Workbook_Open()
MsgBox ("Hola Kakashi, te saluda Richard Chacn") ' 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 frmula:
=SI(ESERROR(BUSCARV(D1;Usuarios;1));"Invalido";BUSCARV(D1;Usuarios;1))
Asignarle a una Celda (D1) el nombre Clave1
el 26 ago. 08
Votar 1
Comentar
Compartir

Aadir comentario
Respuesta de jerryeagle
1

jerryeagle
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 cdigo 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 Contrasea 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.
el 23 ago. 08

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 botn para que me de el acceso al archivo se queda plasmado y no me deja
modificarlo.

ise algo mal?


Gracias y saludos.

el 25 ago. 08

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
jerry0013@yahoo.com.mx

S-ar putea să vă placă și