Como cambiar esta parte del código

Amigo esperto melodiando por aqui tambien logre encontrar este ejemplo para usar un formulario con usuario y clave
En el ThisWorkbook utilizo esto según el ejemplo que aparece en este página de todoexpertos
Private Sub Workbook_Open()
Application.Visible = False
UserForm2.Show
End Sub
esto lo entiendo
En el Userform esta esto
Option Explicit
Private Sub CommandButton1_Click()
If TextBox1 = "" Then
MsgBox "Escriba su usuario", vbCritical
Exit Sub
End If
If TextBox2 = "" Then
MsgBox "Escriba su contraseña", vbCritical
Exit Sub
End If
Call valida_usuario(TextBox1 & ";" & TextBox2)
UserForm1.Show
Unload Me 'opcional seguir en el UF2 para permitir un nuevo ingreso de clave
End Sub
Private Sub CommandButton2_Click()
Unload Me
Application.Visible = False: ActiveWorkbook.Close
End Sub
Esto tambien lo entiendo
Pues hasta aquí estoy claro el problema se me presenta al momento que el formulario que se carga al comienzo me pide el nombre de usuario y la contraseña es decir no se como colocársela ya que en una parte del código que viene a continuación hay una linea de código que manda abrir un archivo llamado Password.txt y no se como hacer esto te coloque en negrilla lo que entiendo ya que yo quiero que me busque los datos en una tabla que tengo hecha en una hoja de excel, pero si con un archivo txt es más fácil por favor explicame y lo haré graciar de ante mano
Private Sub UserForm_Click()
End Sub
y en el modulo tengo esto:
Option Explicit
Public intento As Boolean
Dim f As Integer
luego el Sub valida_usuario(cadena As Variant) que asi:
Sub valida_usuario(cadena As Variant)
Dim Archivo1 As String
Dim error 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 error = True: Exit Do
DoEvents
Loop
If error = False Then
f = (f + 1)
If f = 4 Then Application.Visible = True: ActiveWorkbook.Close
MsgBox "La contraseña no es valida", vbCritical: Application.Visible = False: intento = False
Else
intento = True
Application.Visible = False
Unload UserForm2
End If
Close #1
err:   If err.Number = 53 Then MsgBox "No se encuentra La tabla de contraseñas ", vbCritical
End Sub
el form que da asi:
Option Explicit
Private Sub CommandButton1_Click()
If TextBox1 = "" Then
MsgBox "Escriba su usuario", vbCritical
Exit Sub
End If
If TextBox2 = "" Then
MsgBox "Escriba su contraseña", vbCritical
Exit Sub
End If
Call valida_usuario(TextBox1 & ";" & TextBox2)
If intento = True Then
Unload Me 'opcional seguir en el UF2 para permitir un nuevo ingreso de clave
UserForm1.Show
End Sub
Private Sub CommandButton2_Click()
Unload Me
Application.Visible = False: ActiveWorkbook.Close
End Sub

1 Respuesta

Respuesta
1
El código utiliza un archivo llamado Password.txt que se encuentra en la misma ruta del archivo de excel y utiliza el formato usuario;contraseña para asignar usuario y contraseña por cada línea del archivo... es decir admite varios usuarios y contraseñas, uno por línea. No veo mucho sentido en esto ya que con solo abrir el archivo de texto se tendrá la lista completa de usuarios y sus contraseñas. Además hay que cambiar el valor de application. Visible a true en la línea 17 en valida_usuario.
Es mejor la idea de tener las claves y los usuarios en una hoja en excel y ocultarla o mejor buscar código que te permita encriptar las claves. PAra lo primero se me ocurre en una Hoja llamada HojaClaves, para el ejemplo, tener en la columna A los nombre de usuarios y en B las contraseñas... Ocultar la hoja en Private Sub Workbook_Open() con algo como: Sheets("HojaClaves"). Visible = xlVeryHidden
Y cambiar la macro valida_usuario por esta otra...
...
Sub valida_usuario(cadena As Variant)
    Dim LaClave() As String
    LaClave = Split(cadena, ";")
    f1 = 0
    f2 = 0
    i = 1
    Do Until IsEmpty(Sheets("HojaClaves").Range("A" & i).Value)
        If (f1 = 4 Or f2 = 4) Then Application.Visible = True: ActiveWorkbook.Close
        If LaClave(0) = Sheets("HojaClaves").Range("A" & i).Value Then
            If LaClave(1) = Sheets("HojaClaves").Range("B" & i).Value Then
                Application.Visible = True
                Unload UserForm2
                MsgBox "Éxito"
                Exit Sub
            Else
                MsgBox "Contraseña incorrecta.", vbCritical
                f1 = f1 + 1
                Exit Sub
            End If
        Else
        End If
        i = i + 1
    Loop
    MsgBox "El nombre de usuario No existe", vbCritical
    f2 = f2 + 1
End Sub
...
Prueba y me cuentas, igual como te digo no es algo muy seguro pero sirve para usuarios noveles...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas