ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

FORMULA DE EXCELL


Enviado por   •  12 de Diciembre de 2012  •  1.250 Palabras (5 Páginas)  •  463 Visitas

Página 1 de 5

Leer el número de serie de los discos

Hoy os presento una utilidad que puede servirle a aquellas personas que tengan una aplicación comercial realizada en excel. Como “aplicación comercial”, me estoy refiriendo a una aplicación desarrollada en excel, y que vendéis ya sea a empresas o a particulares. Si habéis decidido que vuestra aplicación no sea de libre distribución, quizás esto os pueda servir.

Imaginemos que habéis vendido una aplicación financiera que sirve para analizar una compañía, y en la que habéis invertido cientos de horas hasta dejarla, simplemente perfecta. Imaginemos que vendéis esa aplicación a una empresa, por la módica cantidad de 30 euros. ¿Qué os parecería ver que vuestra aplicación acaba en todos los PC’s, de todos los directores financieros, de todas y cada una de las empresas, porque se la han descargado de la red?. No parece muy lógico, si te has decantado por un modelo de negocio basado en la distribución de una aplicación, que requiere una contraprestación económica.

¿Qué podemos hacer, para evitar la libre distribución de esa aplicación?. Por una parte, podemos impedir que a un fichero se le cambie el nombre, y evitar que otra persona o empresa le ponga el nombre que a él se le antoje. Pero eso no es suficiente para evitar que nuestra aplicación circule impunemente por la red, sin haber pagado su correspondiente licencia.

¿Qué más podemos hacer?. Pues podemos controlar las máquinas en las que se ejecuta la aplicación. Quizás te preguntes “¿a qué te refieres con eso de controlar?”. Pues a algo tan sencillo –en principio-, como es leer el disco (o los discos) instalados o conectados en el PC del usuario que ha adquirido tu aplicación, e impedir que la misma se ejecute en otros PC’s que no sean ese. Hombre, siempre podremos darle al usuario un margen, por si su disco duro le ha petado, o si ejecuta la aplicación desde una llave USB. En estos casos, podemos controlar el número de ejecuciones de la aplicación, e impedir por ejemplo que ese libro de excel se abra en más de 2, de 3, de 5, o de X ordenadores.

Para leer el número de serie de los discos (extraíbles o fijos) de un PC, he partido del código que he encontrado en la red, y que permite hacer esto que nos proponemos. Hay varios ejemplos más, unos que utilizan el objeto FileSystemObject, y otros que usan otros métodos, pero el que realmente “lee” el número de serie de los discos, es este que he encontrado en la red:

Sub AveriguarNumeroDeSerieDeDiscos()

Dim oWMI As Object, Discos As Object, Disco As Object

Set oWMI = GetObject("WINMGMTS:")

Set Discos = oWMI.instancesof("Win32_PhysicalMedia")

For Each Disco In Discos

MsgBox "Serie: " & Disco.serialnumber

Next

Set Disco = Nothing

Set Discos = Nothing

Set oWMI = Nothing

End Sub

Me he permitido añadir alguna cosilla a ese macro, para que haga lo siguiente:

1.- En la hoja3 (el nombre interno VBA de la hoja, no el nombre que tiene la pestaña, aunque puede que coincidan) escribiremos todos los números de serie con los que nos encontremos, siempre y cuando no tengamos ya registrado uno de los números de serie de los discos presentes en ese PC. La hoja3 estará oculta (la haremos visible para trabajar con ella, y posteriormente la ocultaremos).

2.- Permitiremos que nuestra aplicación se pueda ejecutar en 5 ordenadores diferentes (podéis cambiar esa cifra). En caso de ejecutarla en un sexto ordenador, el libro de excel se cerraría automáticamente.

Tenemos una limitación, y es que las memorias flash no nos devuelven ningún número de serie, por eso tenemos que controlar todos los discos presentes en el PC. Si distribuimos nuestra aplicación, y ésta se ejecuta desde una llave USB, y no leyéramos el disco duro, entonces estaríamos permitiendo que Pepito le pasase la aplicación a Menganito y a sus 50 amigos, porque no podemos leer el número de serie de la llave USB (al menos este macro que encontré, no lo hace). Leyendo el número de serie de todos los discos, sabremos con toda certeza, si la aplicación se ejecuta en diferentes ordenadores, incluso si ésta se ejecuta desde una llave USB (si la llave USB la pinchamos en más de 5 ordenadores, se bloqueará la aplicación, porque a pesar de estar siempre en la misma USB, el usuario está incumpliendo las condiciones: no se puede ejecutar la aplicación en más de 5 PC’s distintos).

Bueno, aquí os dejo el código completo, y debidamente comentado. Ojo, debéis copiarlo y pegarlo en ThisWorkbook, dentro de Microsoft Excel Objetos. También lo podéis copiar y pegar en un módulo, con el nombre de Sub Auto_open(), en lugar de Private Sub Workbook_Open().

Por supuesto, no hace falta que os diga que si deseáis utilizar este código en vuestras aplicaciones, tendréis que proteger el código VBA, poniéndole una contraseña desde Herramientas, seleccionando Propiedades de VBA Project…, y desde la pestaña Protección. Desde ahí podremos bloquear la visualización, poniéndole una muesca a esa opción, y pondremos el password dos veces, una de ellas para confirmarlo:

Private Sub Workbook_Open()

'Desactivamos las teclas de cancelación de macros

Application.EnableCancelKey = xlDisabled

'Ocultamos el procedimiento

Application.ScreenUpdating = False

'Mostramos la Hoja3

Hoja3.Visible = xlSheetVisible

'omitimos los

...

Descargar como (para miembros actualizados)  txt (8.4 Kb)  
Leer 4 páginas más »
Disponible sólo en Clubensayos.com