Jump to content

Archived

This topic is now archived and is closed to further replies.

Antoni

Añadir licencia de uso a un archivo Excel

Recommended Posts

Hola:

Os adjunto dos archivos:

1) LicenseGenerator:

Contiene un formulario que añade un Nº de Licencia y una Fecha de Validez a un archivo seleccionado previamente. El Nº de licencia consiste en 4 números de 4 cifras, de las cuales la cuarta cifra se obtiene a partir de un cálculo que se realiza con las otras 3. El número de tres cifras se obtiene aleatoriamente entre 101 y 999.

Cuarta cifra = [(Unidades *2) + (Decenas * 4) + (Centenas * 8)] Módulo 10

La fecha de validez consiste en una fecha a 30 días, 60, días, 90, días o indefinida.

Esta información se incrusta en la celda A1 de la hoja $$$Versión$$$, hoja que si no existe se crea y si existe se modifica.

La forma de incrustar la información es a través del objeto SmarTags. Este objeto nos permite añadir etiquetas inteligentes a un rango. Utilizamos este sistema porqué la información añadida es opaca al usuario si la etiqueta no es una de las etiquetas reconocidas por Excel. Válido solo para Excel 2007.

2) LicenseComprobator:

Contiene la macro ComprobarLicencia, que debe añadirse al evento Open del libro al que hemos añadido la licencia.

Espero haberme explicado bien, si no, no dudeis en consultar.

Saludos.

PD. No tiene ningún sentido si no se protege el proyecto VBA.

Si, si,.. ya lo se, existen métodos mas sofisticados para calcular el dígito de control, pero hoy estoy vago, a sea que el quiera lago mas bonito, ya sabe lo que hay que hacer.

16.09.2012

La forma de incrustar la información es a través del texto de una autoforma no visible.

Válido para todas las versiones de Excel.

Descargar esta versión en el post #25.

LicenseGenerator.zip

LicenseComprobator.zip

Share this post


Link to post
Share on other sites

Hola Macro;

Alucinante, en tu caso tu limite no es la codificacion, sería la imaginacion por inventar algo nuevo, pero por lo que veo tu imaginacion es ilimitada, jejeje. Gracias por todo.

Un Saludo.

Jose Maria.

Share this post


Link to post
Share on other sites

excelente Macro Antonio... peronas como tú hacen que un mundo como éste cobre sentido, al mismo tiempo, nos inspira para ser diferentes, y por qué no decir ésta frase que me ha acompañado a lo largo de mi vida: SUEÑO, PIENSO, ANALIZO y EJECUTO...

saludos cordiales, y gracias por el valioso aporte...

Share this post


Link to post
Share on other sites

Hola MacroAntonio, he mirado tus archivos funcionan y no me da ningún error, pero como bien sabes en estos temas estoy muy pero que muy verde, por lo tanto pregunto, ¿cual sería el buen funcionamiento de ese código licencia? es decir ¿si en vez de poner en el generador el archivo que tú has puesto de prueba, pongo otro cualquiera creado por mi y al que le quiero crear esa licencia, al aceptar el código que has creado inserta en mi archivo lo necesario para que al abrirlo la próxima vez lo pida?

No sé si me explico correctamente en mi pregunta, si no la entiendes comenta he intento clarificarla.

Muy bueno tu proyecto o idea, ahora a aprender el buen funcionamiento y ponerlo en práctica en cuanto se pueda, gracias y enhorabuena por todo.

Saludos, Germán.

PD: Al final lo conseguirás.

Share this post


Link to post
Share on other sites

Hola:

Aclaro un poco el tema del funcionamiento.

Con el generador de licencias añadimos al libro seleccionado una hoja nueva oculta con el nombre "$$$Versión$$$".

En esa hoja en la celda A1 "incrustamos" el Nº de licencia generado y La fecha de expiración de la licencia.

Ahora al libro seleccionado debemos incorporarle el procedimiento de reconocimiento de la licencia.

Eso lo hacemos en el evento Open del objet0 Thisworkbook

Private Sub Workbook_Open()
ComprobarLicencia
End Sub
[/CODE]

Y en un [b]módulo normal[/b] añadirle la macro [b]ComprobarLicencia[/b]:

[CODE]Const strLink = "urn:schemas-microsoft-com:smarttags#StockTickerSymbol"

Sub ComprobarLicencia()
Dim Partes, Validez, Suma
On Error GoTo SinLicencia

Application.SmartTagRecognizers.Recognize = True
Partes = Split(Sheets("$$$Versión$$$").Range("A1").SmartTags.Add(strLink).Properties(1), "-")
Validez = Sheets("$$$Versión$$$").Range("A1").Range("A1").SmartTags.Add(strLink).Properties(2)
For x = 0 To UBound(Partes)
Suma = 0
For y = 1 To 3
Suma = Suma + Mid(Partes(x), 4 - y, 1) * (2 ^ y)
Next
If Suma Mod 10 <> Val(Right(Partes(x), 1)) Then GoTo SinLicencia
Next
If Date > CDate(Validez) Then GoTo SinLicencia
If CDate(Validez) - Date < 91 Then
MsgBox "Software en evaluación. Quedan " & CDate(Validez) - Date & " días para la expiración de la licencia.", _
vbInformation, "Comprobación de licencia"
End If
Exit Sub

SinLicencia:
MsgBox "La licencia del software ha expirado o es inexistente", vbCritical, "Comprobación de licencia"
Application.DisplayAlerts = False
Application.Quit
End Sub
[/CODE]

Estos códigos son los que vienen en el libro [b]LicenseComprobator[/b].

Y así con cualquier otro libro que queramos controlar su ejecución.

Ya explico en el post inicial cual es el [b]algoritmo de generación[/b] del Nº de Licencia.

El truco consiste que como la 4ª cifra de cada uno de los 4 números que componen el Nº de Licencia son resultado de un cálculo con las otras 3, no es necesario introducir el Nº de Licencia para "registrarla", ya que está "incrustada" en la celda "A1" de la hoja "$$$Versión$$$", simplemente repetimos el cálculo de la 4ª cifra de cada número y comprobamos que sean iguales, también se comprueba que esté en vigor comparando la fecha del día con la fecha de expiracíon de la licencia.

Es imposible que nadie sea capaz de generar al azar un Nº de Licencia válido (1 posibilidad entre 10.000), al margen de ser bastante experto en VBA.

Si no queda claro, dímelo y ya veremos que hacemos.

Share this post


Link to post
Share on other sites

Hola Antoni, no logro hacer que funcione, se genera la hoja, en la cual veo que en A1 has puesto los distintos office, y dices que ahí añada el código licencia y la fecha, pero, ¿se borra lo que hay, se añade los números seguidos, con espacios, sin espacios, la fecha también? he probado de todas formas y no lo consigo siempre me dice que la licencia ha expirado. . . ., siento mi torpeza pero necesitaría más información para ver si lo logro.

Y como sugerencia, a la hora de crearse el código licencia y fecha, en vez de en un formulario que por cierto no deja copiar el código licencia, ¿se podría generar en txt por ejemplo? y así facilitar el copiado para hacer un copiado y pegado.

Gracias por todo y saludos, Germán.

Share this post


Link to post
Share on other sites

Vamos a ver Germán:

Tu no tienes que tocar para nada la hoja "$$$Versión$$$".

Esta hoja esta oculta y debe permanecer siempre así.

En la celda A1 ya están el Nº de Licencia y la Fecha de Expiración, lo que sucede es que están ocultas y no las puedes ver.

El Nº de Licencia no es una contraseña, no hay que introducirlo en ningún sitio.

Lo que si hay que hacer es añadir las 2 macros del post anterior:

Una en Thisworkbook y la otra en un módulo normal.

Y ya está. No se explicarme mejor.

Leelo con atención y verás que no es tan difícil.

Sañudos.

Share this post


Link to post
Share on other sites

Ok, ahora con eso de decir que no hay que introducirlo está claro, por eso el tuyo funcionaba y el mío no, yo intentaba hacerlo insertando en A1 la licencia y la fecha.

Muchas gracias por todo y perdona la torpeza que puede te halla desesperado un poco, jejejejeee.

Saludos, Germán.

Share this post


Link to post
Share on other sites

Hola,

Para usar un archivo con "licencia de uso" expirada, seguid cualquiera de los siguientes pasos:

imagen1sv.jpg

Algunos metodos para saltarse la proteccion de licencias de Macro Antonio:

  1. Cuando sale mensaje de advertencia, Presionar CTRL+Break(Pausa), y luego finalizar
  2. Cambiando manualmente la fecha del ordenador a por ejemplo, el año 2000
  3. Desde cualquier otro archivo excel, agregar el siguiente codigo que llama al archivo deshabilitando previamente los eventos de la hoja:
    Sub pruebas()
    With Application
    .EnableEvents = False
    Workbooks.Open "D:\Escritorio\Pruebas.xls", 1
    .EnableEvents = True
    End With
    End Sub[/CODE]


  4. Sin deshabilitar eventos, usar una macro que llame al archivo. Al preguntarte si deseas guardar cambios presionas cancelar y el archivo queda abierto.
  5. Usando el LicenseDateExpansion que va en el adjunto. Funciona de la misma manera que el encriptador de Macro Antonio, de hecho, es su misma hoja modificada (Espero que no te importe amigo mio :P)

Saludos

LicenseDateExpansion.xls

Share this post


Link to post
Share on other sites

parce esto es lo que estoy buscando para mi programa en excel vba, ya añadi la macro comprobar licencia al thisworkbook mi archivo de excel, pero no se que mas sigueee... serias tan amable de explicarme el siguiente paso...es de gran importancia..muchas gracias

Share this post


Link to post
Share on other sites

Don macro Antonio, que capacidad tan grande de programarrrr... y lo mejor es que la pone al servicio de los que por algun motivo no somos tan buenoss...he estado tratando de introducir este codigo a un archivo pero al abrir el archivo me sale un menaje que dice la licencia del software ha expirado o es inexistente... volvi a generar un nuevo código y me sigue apareciendo lo mismo... usted que conoce su programacion.. podria ayudarme a encontrar que error estoy cometiendo???...

Share this post


Link to post
Share on other sites

el licencegenerator no me crea la hoja "$$$Versión$$$", sin embargo yo la creo manualmente y le pongo el numero de la licancia y siempre me dice que la licencia expiró.

me falla en estas líneas:

Partes = Split(Sheets("$$$Versión$$$").Range("A1").SmartTags.Add(strLink).Properties(1), "-")

Validez = Sheets("$$$Versión$$$").Range("A1").Range("A1").SmartTags.Add(strLink).Properties(2)

conoces más sitios de donde se puedan descargar generadores de licencias para archivos de excel pero que tengan vigencia de 15 días?

me puedes ayudar a solucionar esto?

de antemano gracias!!!

Cordial saludo

Share this post


Link to post
Share on other sites

Hola Macro Antonio intente utlizar tus archivos desde Excel 2010 y siempre me devuelve licencia expirada

estuve probando el codigo y esta linea me devuelve vacio

Partes = Split(Sheets("$$$Versión$$$").Range("A1").SmartTags.Add(strLink).Properties(1), "-")

asi que salta a sin licencia busque en google sobre los smart tags y me encontre con esta desagradable sorpresa

Obtiene un objeto SmartTags que representa el identificador del control NamedRange. Este tipo o miembro está diseñado para usarse exclusivamente en proyectos de 2007 Microsoft Office system. Las etiquetas inteligentes están desusadas en Office 2010.

asi que supongo es la causa del error dime a ti te ha pasado esto tienes el codigo funcional en excel 2010 me gustaria usarlo

Share this post


Link to post
Share on other sites
Hola Macro Antonio intente utlizar tus archivos desde Excel 2010 y siempre me devuelve licencia expirada

estuve probando el codigo y esta linea me devuelve vacio

Partes = Split(Sheets("$$$Versión$$$").Range("A1").SmartTags.Add(strLink).Properties(1), "-")

asi que salta a sin licencia busque en google sobre los smart tags y me encontre con esta desagradable sorpresa

Obtiene un objeto SmartTags que representa el identificador del control NamedRange. Este tipo o miembro está diseñado para usarse exclusivamente en proyectos de 2007 Microsoft Office system. Las etiquetas inteligentes están desusadas en Office 2010.

asi que supongo es la causa del error dime a ti te ha pasado esto tienes el codigo funcional en excel 2010 me gustaria usarlo

Lo pruebo y os comento.

Share this post


Link to post
Share on other sites

Hola a todos:

Pues efectivamente solo funciona con Excel2007.

Os adjunto otras macros válidas para cualquier versión de Excel.

El funcionamiento es idéntico a la versión anterior.

Nueva funcionalidad:

Al comprobar la licencia se comprueba que no haya cambiado el nombre del archivo.

Así evitamos copias del archivo.

Saludos

Licencias.rar

Licencias.rar

Share this post


Link to post
Share on other sites



×
×
  • Create New...

Important Information

Privacy Policy