Archive

Posts Tagged ‘Contraseña’

Permitir 3 intentos de contraseña para usar un archivo de Excel antes de cerrarse

November 21, 2012 1 comment

En un post anterior llamado Simular acceso con usuario y password en Excel con formulario vba presentaba un ejemplo en el que teníamos un formulario que nos solicita usuario y contraseña. Tanto el usuario como la contraseña los tomaba de una tabla y sólo cuando ambos coincidían, permitía cerrar el formulario y continuar.

En este ocasión, y tomando en cuenta el post mencionado, comparto un formulario que se lanza al momento de abrir nuestro archivo de Excel y nos solicita una contraseña para usarlo.

Cómo funciona

A diferencia del otro formulario, este sólo pide una clave de acceso para poder usar el archivo. En caso de que intentemos en 3 ocasiones una clave y ésta sea inválida, se cerrará el archivo.

Código

'Definimos la variable pública Intentos
Public Intentos As Byte
'
'Validar la clave
Private Sub CommandButton1_Click()
If Me.txtPass.Value = 1234 Then
    MsgBox "Contraseña válida. Se cerrará el formulario.", _
        vbInformation, "EXCELeINFO"
    Unload Me
Else
    Intentos = Intentos + 1
    MsgBox "Contraseña inválida. Llevas " & Intentos & " intento(s).", _
        vbInformation, "EXCELeINFO"
    Me.txtPass.SetFocus
    Me.txtPass.Value = ""
End If
If Intentos = 3 Then
    MsgBox "Has cumplido 3 intentos. Aquí se cerrará el archivo Excel.", _
        vbInformation, "EXCELeINFO"
    Unload Me
    ActiveWorkbook.Close SaveChanges:=False
Else
End If
End Sub
'
'Formateamos los objetos del formulario
Private Sub UserForm_Initialize()
With Me
    .txtPass.PasswordChar = "*"
    .txtPass.MaxLength = 8
End With
End Sub
'
'Evitamos que use la x para cerrar el formulario
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
    Cancel = True
    MsgBox "Por favor, ingresa una contraseña.", vbInformation, "EXCELeINFO"
End If
End Sub

Animación del formulario en acción

EXCELeINFO - 3 intentos de contraseña

:: Descargar el ejemplo

Guardar archivo de Excel solo si se ingresa contraseña

November 19, 2012 4 comments

En el artículo llamado Macro para impedir que se guarde un archivo de Excel exponíamos una macro que no te permitía guardar cambios en un archivo ni guardar una copia del mismo.

El código tiene la debilidad de que si queremos, como creadores, guardar cambios que no querramos que otros modifiquen, debíamos deshabilitar macros para hacer los cambios y luego volver a habilitarlas.

La mejora

Mediante la función InputBox lanzamos un diálogo que nos permite introducir una contraseña, y sólo si ingresamos la adecuada, nos permitirá guardar cambios o guardar una copia.

Código

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Pass = "12345"
    Confirma = InputBox("Escribe una contraseña para continuar.", _
        "EXCELeINFO - Guardar")
    If Confirma = Pass Then
    Else
        MsgBox "No tienes permitido guardar el archivo.", vbCritical, _
            "EXCELeINFO"
        Cancel = True
    End If
End Sub

Animación de la macro en ejecución

guardar archivo de Excel solo si se ingresa contraseña

Simular acceso con usuario y password en Excel con formulario vba

March 30, 2012 33 comments

En esta ocasión les comparto un ejemplo donde se simula el acceso a un sistema mediante el ingreso de un Usuario y una Contraseña.

Lo vamos a realizar mendiante un formulario de vba que nos pida y nos valide los siguientes datos:

  1. Que tanto el usuario como la contraseña estén llenos.
  2. Que el usuario ingresado exista en la tabla de usuarios.
  3. Que coincida el usuario ingresado con su contraseña.

Para validar que usuario existe se hace mediante la función COUNT.IF de vba; para elegir al usuario encontrado se hace con el método Find; y por último para validar que el usuario y la contraseña coincidan, se realiza haciendo un Offset de la celda encontrada.

Imagen del formulario de acceso

image

Imagen de la tabla de usuarios

image

Código del formulario

':: By: Sergio Alejandro Campos Hernández
':: Date: marzo de 2012
':: https://exceleinfo.wordpress.com
':: Purpose: simular acceso con usuario y contraseña
'
Private Sub CommandButton2_Click()
Dim usuario As String
Dim password As Variant
Dim DatoEncontrado
Blog = "EXCELeINFO"
UsuarioExistente = Application.WorksheetFunction.CountIf(Range("D3:D12"), _
    Me.txtUsuario.Value)
Set Rango = Range("D3:D12")
If Me.txtUsuario.Value = "" Or Me.txtPassword.Value = "" Then
    MsgBox "Por favor introduce usuario y contraseña", vbExclamation, Blog
    Me.txtUsuario.SetFocus
ElseIf UsuarioExistente = 0 Then
    MsgBox "El usuario '" & Me.txtUsuario & "' no existe", vbExclamation, Blog
ElseIf UsuarioExistente = 1 Then
    DatoEncontrado = Rango.Find(What:=Me.txtUsuario.Value, MatchCase:=True).Address
    Contrasenia = Range(DatoEncontrado).Offset(0, 1).Value
    If Range(DatoEncontrado).Value = Me.txtUsuario.Value And Contrasenia = _
    Me.txtPassword.Value Then
        Range("G2").Value = "Usuario: " & Range(DatoEncontrado).Offset(0, -1).Value
        'Aquí va el código para dar acceso a todo lo que el programador decida
        Unload Me
    Else
        MsgBox "La contraseña es inválida", vbExclamation, Blog
    End If
End If
End Sub

:: Descargar el ejemplo