Jump to content
Sign in to follow this  
Visor

Macro que funcione solo una vez y luego automáticamente se bloquea defintivamente

Recommended Posts

Estimados amigos del foro, se me ha ocurrido plantear un tema para pensar el fin de semana.

El tema es como hacer una macro que funciones solo la primera vez, al abrir el archivo y luego de cerrarlo ya no funcione definitivamente, es decir se bloquee automáticamente su funcionamiento. ¿Como lograr esto?

Como ejemplo puede hacerse cualquier instrucción que crean conveniente, puede ser mostrar un numero, mostrar un texto, ....luego cierro el archivo y cuando vuelvo a abrir ya no funciona.

Espero sus interesantes comentarios

Share this post


Link to post
Share on other sites

Hola Visor,

Por lo mencionas, no veo el caso de creear una macro que no funcione, o que funcione solo una vez, pero yo crearia una copia del libro y despues eliminaria la que tiene las macros (kill.me)

Saludos!!!

Share this post


Link to post
Share on other sites

Visor, la verdad cual sería la funcionalidad de esa tarea?

Si la intención es restringir, como una versión "demo", podrías ser por restricción de fecha o evitar que te copien el archivo y lo ejecuten en otro computador, sería restringirlo.

No crees?

Piénsalo el fin de semana a ver cual de las dos propuestas quieres o se ajustan más a tu necesidad?

Share this post


Link to post
Share on other sites

Aprecio mucho el interés por este tema, en realidad trabajar con los codigos de excel es apasionante sobre todo si por cada desafío se puede ser capas de hacer que funcione. Si recordamos el mensaje de las películas de misión imposible, recordaremos que el mensaje creado se autodestruye definitivamente. esto puede tener varias utilidades para muchos en excel.

Como yo lo oriento, efectivamente es la segunda Acertaste en mi idea!!!

evitar que te copien el archivo y lo ejecuten en otro computador, sería restringirlo.

Es decir hay códigos que extraen el numero de serie del disco duro del computador.

Con esa macros se extrae ese numero y se lo incorpora en otro que es requerido para acceder al uso del archivo, entonces no necesitamos, estar presentes cada vez que queremos saber la serie del disco duro, sino que la macro lo hacer por nosotros mismos, pero esta accion, lo debe realizar una sola vez para que coloque en el código de restricción de acceso. Si no fuese asi, la macro extraeria la seria de cualquier disco duro lo pondría en el código de restricción y esto no serviría de nada. Es decir se tendría hasta cierto punto una autorestricción por maquina. solo funcionaria el archivo de aplicación en la maquina que se hizo la instalación por primera ves y solo en esa maquina. si se pone en otra maquina el archivo, este ya no funciona. con esto se tendría una forma de proteger una aplicación de excel.

Este codigo restringe:

Private Sub Workbook_Open()
Dim Serie As String
Dim FSO As Object
Dim DiscoDuro As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set DiscoDuro = FSO.GetDrive("c:")
Serie = DiscoDuro.SerialNumber
If Serie <> "-1370136684elnumSerie" Then
MsgBox "ESTE EQUIPO NO ESTÁ AUTORIZADO PARA EL USO DE ESTE PROGRAMA"
‘Application.Quit ‘Antes de poner en uso prueba esta codigo con comentario ‘
End If
Set DiscoDuro = Nothing
Set FSO = Nothing
End Sub
[/CODE]

Nota: El codigo que se debe anular es el que extrae el numero de serie del disco duro y lo coloca luego del If Serie <> "....... para que se evite seguir funcionando en otra maquina.

Share this post


Link to post
Share on other sites

jejeje,

claro aquí te pongo el codigo de extracción del numero de serie del disco duro

Sub SerieHD_AlHacerClic()
' Sub DesplegarNumeroSerieDiscoDuro()
Dim FSO As Object 'FileSystemObject
Dim DiscoDuro As Object 'Drive
Set FSO = CreateObject("Scripting.FileSystemObject")
Set DiscoDuro = FSO.GetDrive("c:")
'OJO: Las siguientes DOS líneas van en una sola linea de codigo
MsgBox "El número de serie del disco " & DiscoDuro.Path & " es " & Format(DiscoDuro.SerialNumber, "# ### ### ###"), vbInformation
Set DiscoDuro = Nothing
Set FSO = Nothing

End Sub[/CODE]

Ojo: Solo debe de dejar de funcionar este código, las demás macros de esta aplicación excel deben continuar funcionando en mi maquina (A). si llevo al archivo a mi maquina (B) ya no funciona porque el numero de serie es otro, ya no extrae el numero de serie porque ha dejado de funcionar.

El código faltante son al menos 2: el que coloca el numero de serie extraido en el codigo de restriccion, y el que hace que deje de funcionar.

Nota: mi excel es del 2010, 32bits

Share this post


Link to post
Share on other sites
no veo el caso de creear una macro que no funcione, o que funcione solo una vez,

Max2005, otra orientacion seria, que....envio un mensaje hecho en el archivo excel a quien sea X. Esta persona lo habre, lo lee, cierra el archivo y cuando lo vuelve a abrir, el mensaje ya no existe, no queda evidencia del mensaje o mejor aun del código, solo sirvió una ves, el archivo puede ser abrierto muchas veces pero el mensaje ya no existe, o puede aparecer otro mensaje Ej "El mensaje ya no existe" o si fue una demostración de alguna función, esta ya no existe.

Lo que yo en realidad estoy requiriendo es lo que le estoy contestando a jonetoja, uso exclusivo de una aplicacion en una maquina y que esta determinacion sea automática, asi si envio mi archivo a España por ejemplo solo se autoprotege, sin rquerir que yo este presente para que suceda la proteccion hecha por mi mismo.

Share this post


Link to post
Share on other sites

Podría acaso ser que la serie se extrae si en una hoja en celda A1, hay un numero, luego envia la serie a la subrutina

Workbook_Open()

para ejecutarla, esta ultima subrutina en cambio se encarga de borrar el numero que este en A1, por lo tanto al quedar eliminada el contenido de A1 la primera subrutina deja de funcionar y se ejecuta normalmente la

subrutina

Workbook_Open()

pero siempre estara comparando la serie en caso de ser otra serie entonces se mostraría el mensaje

"ESTE EQUIPO NO ESTÁ AUTORIZADO PARA EL USO DE ESTE PROGRAMA"

Espero que pueda ser algo si por el estilo, pero ...como envio el dato de serie a la subrutina

Workbook_Open()??

solo son ideas previas

Share this post


Link to post
Share on other sites

Hola voy a dejarles un aporte que había realizado en otro tema anteriormente tal vez sea de utilidad, es un archivo excel el cual tiene una versión "Demo", que se puede utilizar 3 veces o introduciendo la clave de administrador pueden utilizarlo las veces que quieran.

El registro de usos se graba en el registro de Windows no en el archivo de excel en la siguiente clave deñ registro: HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Clave\Defaults

Las contraseñas se pueden cambiar dentro del formulario.

Salu2

Demo.rar

Share this post


Link to post
Share on other sites

Muchas gracias voy a probar los interesantes aportes, la idea es que la aplicación solo funcione en una maquina. Es por eso que la extracción de la serie del HD funcione solo una vez y de manera automatica (Sin que yo mismo tenga que hacerlo).

revisare y comentare

Share this post


Link to post
Share on other sites

Jonetoja es genial e interesante lo que has elaborado al igual que Ridle, pero en realidad no es un demo lo que busco, como lo mencione al abrir el tema

como hacer una macro que funcione solo la primera vez, al abrir el archivo y luego de cerrarlo ya no funcione definitivamente, es decir se bloquee automáticamente su funcionamiento. ¿Como lograr esto?

Solo la macro de extraccion de la serie del HD debe dejar de funcionar. Por ejemplo abro el archivo por primera vez en mi maquina (A) entonces la macro de extraccion del numero de serie del HD funciona, colocando la serie en la segunda macro que es la que restringe (codigo previmente subidos aqui). Uso el archivo con todas las aplicaciones que he creado. cierro el archivo y la macro de extraccion de l numero de serie del HD deja de funcionar.

Cuando vuelvo a abrir el archivo la macro de restriccion no me da problemas porque el numero de serie es de mi maquina (A), entonces uso las aplicaciones cuantas veces quiera en mi maquina (A)

Pero.... si llevo este archivo (que ya lo abri en mi maquina (A)), lo llevo a otra maquina (B) la macro de restriccion me bloquea puesto que en sus codigos consta la serie de mi maquina (A) diferente a la (B) por lo tanto me bloque el uso ahora si de todo el archivo.

Espero haber hecho comprender

No es una demo lo que busco.. ni cuentas de numero de usos, sino restricción de maquinas, Solo funciona en una sola maquina y este evento se produzca por si sola o automáticamente.

Lo de jonetoja en mi misma maquina me esta restringiendo el uso, pues no reconoce mi maquina y si lo llevo a otra maquina al archivo continua con el mismo comportamiento no hace diferencias

Lo de Ridle es efectivamente para casos de demos

Share this post


Link to post
Share on other sites

jejeej!!Siii funciona!!! Reconociendo a las maquinas!!

Abri en mi maquina (A), me permite el acceso todo el tiempo. Copie el archivo ya abierto y me fui a mi maquina (B) me deniega el acceso.

Tambien hice lo contrrio primera vez abrio en maquina (B) me permite el acceso todo el tiempo y cuando llevo este archivo ya abierto en (B), lo llevo a la maquina (A) me deniega el acceso.

Correctísimo !!

Pero lo que sucede es que lo que deniega el acceso solo veo eso en el mensaje, pues el archivo si se puede usar!!??, se supone que solo debe funcionar en la maquina permitida, mas no en la denegada. Falta demostrar que no funciona en otra maquina.

Creo que en esta parte ya esta mas fácil a lo mejor colocando Application.quit en la se tiene que denegar....o algo asi...no lo se.

Entonces:

Sinceramente no le veo mucha utilidad

Por lo menos al neofito en el tema...

1 Le sale denegado!! podra dejar el intento,

2 supera la denegacion, se debera topar con las contraseñas de acceso a las paginas, a los códigos macro

3. También hay por la web autoeliminación del archivo luego de no colocar contraseña correcta.

Lo cierto es que si yo manejo mi archivo particular al menos hay esta ligera opción de que otro no lo use en otra maquina.

o si entrego un archivo a alguien, tendría cierta certeza de que al abrirlo en su maquina solo le va a servir a él en su maquina, no lo podrá pasar a otros pues no les funcionaría en otra maquina.

Esta es la utilidad que le veo

comprendo que para los expertos esto no es barrera, con lo que muestra el Maestro Macro Antonio, es cierto pero al menos para algunos sera barrera.

.....voy a probar lo de Ridle en otras máquinas también

Share this post


Link to post
Share on other sites

OK como también podría ser que primero muestra el mensaje de acceso denegado y luego el código que mencionas para que no se pueda usar el archivo.

Gracias Riddle

Si talvez alguien estuvo preparando una alternativa mas me gustaría que tenga la posibilidad de colocarla hasta mañana antes de que [uSER=1101]@Fleming[/uSER] proceda a cerrar el acceso al tema, y en especial por jonetoja quien también tomo tiempo valioso para resolver esto. Por favor solicito considerar esto.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png