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 de calvuch
1
1
calvuch, las fallas constantes de esta web me cansaron!! me voy a...
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