Crear Usuario y contraseña en controles activex

Hola expertos, quisiera crear controles en donde tenga usuario y contraseña para acceder al libro de excel, con un macro.
Saludos.

1 Respuesta

Respuesta
1
Tengo un ejemplo que tal vez puedas adaptar, consiste en que al solicitar la apertura del libro se pide usuario y contraseña, mediante un par de inputbox
estas cadenas se unen en una sola cadena, la cual se compara mediante los registros de un archivo txt denominado "Password.txt", ubicado en un path que tu escojas.
El archivo txt debe contener usuario y contraseña en este formato:
jaimepat;1234   o jaimepat;abf12d
Discrimina entre mayúsculas y minúsculas
En el evento open del libro pones esto
Private Sub Workbook_Open()
Dim pas As Variant
Dim u As Variant
Application.Visible = False
u = InputBox("Ingresa tu Usuario")
pas = InputBox("Ingresa tu Contraseña")
If Len(u) = 0 Then Application.Visible = True: ActiveWorkbook.Close
If Len(pas) = 0 Then Application.Visible = True: ActiveWorkbook.Close
Call valida_usuario(u & ";" & pas)
End Sub
y luego agergas este sub
Sub valida_usuario(cadena As Variant)
Dim Archivo1 As String
Dim m As Boolean
On Error GoTo err
Open (ActiveWorkbook.Path & "\Password.txt") For Input As #1
Do Until EOF(1)
     Line Input #1, Archivo1
     If cadena = Archivo1 Then m = True: Exit Do
    DoEvents
Loop
If m = False Then
MsgBox "La contraseña no es valida", vbCritical: Application.Visible = True: ActiveWorkbook.Close
Else
Application.Visible = True
End If
Close #1
err:   If err.Number = 53 Then MsgBox "No se encuentra La tabla de contraseñas ", vbCritical
End Sub
Ojo con es la linea:
Open (ActiveWorkbook. Path & "\Password.txt") For Input As #1
en ella le indicas a excel donde debe ir abuscar el archivo de password
espero te sirva.
Bye
Esta super, me has ayudado, ahora bien, quisiera que el usuario y contraseña saliera en un mismo Inputbox, no por separado.
Mil gracias.
Ya. Eso cambia las cosas
Veamos
1 debes eliminar todo lo anterior
2 crea un userform1 con 2 textbox y dos botones
3 en el evento Workbook_Open debe quedar así:
Private Sub Workbook_Open()
  Application.Visible = False
  UserForm1.Show
End Sub
en el modulo insertado debes poner esto:
Sub valida_usuario(cadena As Variant)
Dim Archivo1 As String
Dim m As Boolean
On Error GoTo err
Open (ActiveWorkbook.Path & "\Password.txt") For Input As #1
Do Until EOF(1)
     Line Input #1, Archivo1
     If cadena = Archivo1 Then m = True: Exit Do
    DoEvents
Loop
If m = False Then
MsgBox "La contraseña no es valida", vbCritical: Application.Visible = True: ActiveWorkbook.Close
Else
Application.Visible = True
Unload UserForm1
End If
Close #1
err:   If err.Number = 53 Then MsgBox "No se encuentra La tabla de contraseñas ", vbCritical
End Sub
en el userform pones esto:
Option Explicit
Private Sub CommandButton1_Click()
If TextBox1 = "" Or TextBox2 = "" Then
    MsgBox "Ambos datos son requeridos", vbCritical
    Exit Sub
End If
Call valida_usuario(TextBox1 & ";" & TextBox2)
End Sub
Private Sub CommandButton2_Click()
Unload Me
 Application.Visible = True: ActiveWorkbook.Close
End Sub
Private Sub UserForm_Click()
End Sub
Y ya esta.
Mejor aun :-) solo que me sale un error
Error de copilación
No se ha definido Sub o Funtion
y me marca lo que esta en negritas, ¿a qué se deberá?
Call valida_usuario(TextBox1 & ";" & TextBox2)
Mmmm. Tal vez te falta alguna referencia. Revisa en el editor de Visual basic que referencias tienes asignadas al proyecto
menu Herramientas / Referencias...
Deberías tener:
Visual Basic for applications
microsoft excel 12.0 object library
ole automation
microsoft office 12.0 object library
microsoft forms 2.0 object library
Si esta todo en orden, no me explico que puede pasar si es que has seguido las instrucciones tal cual te he indicado
si sigue el problema indicame un mail al cual enviarte la planilla de ejemplo
Estimado calvuch:
Ya vi el problema je je, es que estoy utilizando dos userform y en donde dice userfomr 1 no lo cambie con userform2 :-) pero ya lo corregí, ahora bien, perdón por seguirte molestando, lo que quiero ahora es que al validar el usuario y contraseña del userform2, automáticamente me lleve al userform1, como le puedo hacer...
Eso ya es otra cosa. pediste A y ahora deseas A+1
Si he resuelto tu consulta original, por favor evalúa y cierra, si deseas otra pregunta, abres otra pregunta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas