Aplicación para crear libros de prueba
Llevaba bastante tiempo buscando una utilidad que me permitiera publicar un libro de Excel en internet para que otros usuarios lo evaluaran durante un periodo de tiempo. Parece que he conseguido crear un programa (con un poco de ayuda documental) que ha
Esta utilidad le permite a cualquier desarrollador, la creación de libros con funcionalidad completa con total garantía de destrucción si en un periodo establecido, no se introducen las claves correspondientes.
La aplicación funciona de la siguiente manera:
La interfaz del usuario
Cuando el usuario recibe o descarga el archivo, se le muestra la siguiente pantalla:
Si hace clic en Continuar evaluación, podrá disfrutar del libro de Excel sin ninguna restricción por un periodo de 30 días. Este mensaje se mostrará cada vez que abra de nuevo el archivo.
Si por el contrario, el usuario compra una licencia, debería pulsar en el botón Registrar. En este caso, se le pedirán los datos del registro:
Si el correo electrónico y la clave de registro se introducen correctamente, el libro de Excel se desbloquea permitiendo al usuario utilizarlo libremente, ocultando permanentemente los cuadros de mensaje de la utilidad. En caso contrario, tiene la posibilidad de intentarlo de nuevo o de cancelar la apertura del libro, cerrando con ello el archivo:
La parte de programación
El “backstage” de esta aplicación es un poco más complejo, pero trataré de explicarla:
Al abrir el archivo, el evento Open del libro, hace que se bloquéen todas las hojas (de esta forma me aseguro de que si el usuario pulsó en el botón Continuar evaluación hace más tiempo del permitido, no pueda seguir utilizándolo).
Una vez que las hojas están protegidas, busca en el registro de Windows, algún rastro de la aplicación. Si no encuentra nada, se generan unas claves encriptadas con la fecha y la hora de la primera ejecución y de la finalización de la prueba y se guardan en el registro de Windows.
SaveSetting appname:=App, Section:="Class", Key:="iD", _ setting:=proteccion.EnCrypt(Now()) SaveSetting appname:=App, Section:="Class", Key:="eD", _ setting:=proteccion.EnCrypt(Now() + 30) SaveSetting appname:=App, Section:="Class", Key:="Key", setting:="mt"
A continuación se le pregunta al usuario si desea seguir con la versión de prueba o registrar el libro de Excel.
Si selecciona la opción de continuar con la prueba, se comparan las fechas que se guardaron en el registro, para validarlas. Si no se supera la validación, el libro se inutiliza o se cierra. Si se encuentra dentro de las fechas permitidas, el libro se desbloquea.
En caso de que el usuario opte por registrar la aplicación, aparece el formulario para introducir los datos.
El dato que se introduce en el campo del correo electrónico, genera una secuencia aleatoria y de longitud variable de caracteres. Unas determinadas posiciones dentro de esta secuencia deben coincidir con los caracteres que el usuario introduce como Clave. Como es de esperar, se validan los datos.
Si los datos introducidos son válidos, la clave se guarda en el registro de Windows para verificarla cuando se abra de nuevo el archivo.
Adjunto dos archivos. La propia aplicación y el archivo que genera las claves. Ambos sin proteger para que puedas verlos por dentro.
Samuel, la seguridad absoluta antipirateo no existe. Se lo puedes poner muy difÃcil a los hackers, pero las soluciones que ofrece VBA no asegura al 100% el proyecto.
Edgar, tomo tu sugerencia en cuenta para escribir un artÃculo en los próximos dÃas.
De momento, echa un vistazo a este enlace donde, entre otras cosas, dan solución a tu duda.
https://ayudaexcel.com/foro/threads/ir-mostrando-nombres-de-un-listado-mientras-rellenamos-un-text-box-de-un-formulario.29681/
Claro, Samuel, sólo debes sustituir el enlace por mailto:tu_dirección_de_correo. También puedes modificar el principio de la contraseña. Pulsa Alt+F11 para acceder al editor de Visual Basic y después Ctrl+F para buscar. A continuación busca la expresión aexcl (en todo el proyecto) y sustituyela por los caracteres que quieras.
supongamos que el cliente registro en un equipo y ese equipo ya no lo usar para el software usara otro lo ideal seria quitar el registro de ese equipo.
Me considero usuario entendido del Excel pero a la hora del VisualBasic son un completo ignorante. Podrias por favor recomendarme donde puedo hacerme todo un experto mediante autoaprendizaje? sabes de tutoriales o cursos que puedas recomendarme por favor? Mil gracias de nuevo
Un recurso muy bueno para aprender VBA de forma gratuita, lo puedes encontrar en Youtube. Hay cursos completos divididos en varios vÃdeos, que merecen la pena verlos.
Y para hacer algo de autopromoción, te diré que en el foro de Ayuda Excel también puedes mucho sobre VBA a través de casos prácticos que plantean los demás usuarios.
Private Declare Function ShellExecute& Lib “shell32.dll” _
Alias “ShellExecuteA” (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long)
Const SW_SHOWNORMAL = 1
Private Sub lblEmail_Click()
‘ Label’s caption is the email address:
Dim szEmailAddy As String
szEmailAddy = Me.lblEmail.Caption
ShellExecute 0&, “open”, “mailto:” & szEmailAddy, _
vbNullString, vbNullString, SW_SHOWNORMAL
Unload Me
End Sub
Buena tarde
Me interesa este tema pero no me permite descargar los 2 archivos, me gustaría saber si me puede indicar donde los puedo descargar, ya que deseo poder aplicarlos a mis proyectos.