Hola tengo una demo, cuando llega a la fecha establecida me pide una clave, pero cuando cambio una fecha anterior se habilita

Hola Dam, este código de la demo que usted me hizo, me está funcionando perfectamente y de doy las gracias nuevamente, pero tengo un pequeño detalle es que cuando cambio la fecha del sistema de mi pc, se habilita el acceso a la aplicación, por ejemplo yo tengo la fecha 20/08/2014 y cuando llega a ese día me pide la clave de ingreso, perfecto, pero si cambio a la fecha al 01/09/2014, se habilita hasta llegar al 20/09/2014 y a si sucede con todos los meses siguentes, e igualmente si la retrocedo la fecha a un mes anterior, por ejemplo al 01/07/2014 se habilita hasta el 20/07/2014. Lo segundo es que si presiono el botón aceptar de la ventana InputBox,  también se habilita, si es posible lo que necesito es que una vez cumplida la fecha establecida en el código, no se vuelva habilitar mas hasta no ingresar la clave, que si cambio la fecha del sistema en mi pc, no me permita ingresar más si no es con la clave. Quedo atento a sus comentarios, Muchas gracias

Aquí le dejo el código que usted me diseño.

Sub abriruserform1()
'Por.DAM
    If Date >= "20/08/2014" Then
        clave = InputBox("El tiempo ya expiró. Ingresa clave: ")
        If clave = "" Then Exit Sub
        If clave <> "abc" Then
            MsgBox "Clave incorrecta, no se puede iniciar la aplicación", vbCritical
            Application.Quit
            Exit Sub
        End If
    End If
    For Each h In Sheets
        h.Unprotect "asd"
    Next
    UserForm1.Show
    For Each h In Sheets
        h.Protect "asd"
    Next
    Application.DisplayAlerts = False
    Application.Quit
End Sub

1 respuesta

Respuesta
1

Prueba con esto:

Sub abriruserform1()
'Por.DAM
    Dim fec As Date
    fec = "20/07/2014"
    If Date >= fec Then
        clave = InputBox("El tiempo ya expiró. Ingresa clave: ")
        If clave = "" Then Exit Sub
        If clave <> "abc" Then
            MsgBox "Clave incorrecta, no se puede iniciar la aplicación", vbCritical
            'Application.Quit
            Exit Sub
        End If
    End If
    For Each h In Sheets
        h.Unprotect "asd"
    Next
    UserForm1.Show
    For Each h In Sheets
        h.Protect "asd"
    Next
    Application.DisplayAlerts = False
    'Application.Quit
End Sub

Pero si cambias la fecha de tu PC a una fecha anterior al 20 de julio entonces no te va a pedir clave, para evitar eso habría que pensar en otra estrategia. Se me ocurre que cada vez que entren a la macro abriruserform1, crear un archivo "fec" con la fecha del día, ese archivo "fec" deberá estar protegido, a la siguiente vez que entren con la macro abriruserform, se debe abrir el archivo "fec" y si la fecha de ese archivo es mayor a la fecha del día de hoy significa que la fecha de la PC fue alterada y entonces no se permitirá el acceso. Pero esto significa que si borrar el archivo "fec" tampoco podrán entra a la aplicación, por lo tanto, también se tiene que revisar que exista el archivo, en fin, que se tienen que ir poniendo más y más controles para evitar que cambien la fecha de la PC, que borren el archivo "fec" o que cambien el archivo "fec" o alteren el archivo "fec".

Revisa la nueva modificación a la macro, para empezar con algo.

Hola, ya quedo solucionado cuando camabio la fecha en mi pc a un periodo posterior ya no se me habiliata la aplicación y me pide la clave, perfecto, pero si cambio la fecha de mi pc a un periodo anterior, no me pide la clave y se habilita la aplicación, como usted me explico en su respuesta.

Bueno yo quiero comenterle que corte y pegue un tramo de este código y lo cambie, le puse fecha de inicio "02/07/20114", en Date le puse que si la fecha es menor o igual, me pida la clave y no se habilite la aplicación, esto me funciona perfectamente, ya puedo cambiar la fecha a un mes anterior o a un año anterior y me pide la clave y no se habilita la aplicación. Pero quisiera cosultarle a usted porque no se si esta modificación esta bien. Le dejo el código con la modificación hecha. Muchas gracias.

Sub abriruserform1()

'Por.DAM

    Dim fec As Date

fec = "02/07/2014"

If Date <= fec Then

    clave = InputBox("Se cambio la fecha de la pc a un periodo anterior. El tiempo ya expiró.Ingresa clave: ")

        If clave = "" Then Exit Sub

        If clave <> "abc" Then

           MsgBox "Clave incorrecta, no se puede iniciar la aplicación", vbCritical

     Exit Sub

       End If

End If


    fec = "20/07/2014"
    If Date >= fec Then
        clave = InputBox("El tiempo ya expiró. Ingresa clave: ")
        If clave = "" Then Exit Sub
        If clave <> "abc" Then
            MsgBox "Clave incorrecta, no se puede iniciar la aplicación", vbCritical
            'Application.Quit
            Exit Sub
        End If
    End If
    For Each h In Sheets
        h.Unprotect "asd"
    Next
    UserForm1.Show
    For Each h In Sheets
        h.Protect "asd"
    Next
    Application.DisplayAlerts = False
    'Application.Quit

Lo veo bien, si es lo que necesitas y te funciona sigue utilizandolo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas