Si quieres hacer un "sistema de licenciamiento", esta siempre sujeto a algo de vulnerabilidad... pero con cierto grado de seguridad, algo si se consigue, pero no es tan fácil...
Supongamos lo siguiente:
Creas un nombre (Fórmulas, Asignar nombre)... por ejemplo license
Y le pones en se refiere a: ="abc123" (ejemplo, en el caso el serial fuera abc123 )
A ese nombre lo haces oculto... ejecutando el código:
Names("license").visible=false
Para obtener el valor almacenado en ese nombre, en la parte del código que hará la comparación después usarás Evaluate(names("license"). Value)
Ahora...
En el evento BeforeClose del módulo ThisWorkbook ocultas TODAS las hojas menos una, que sería una de menú, o una que solo diga "Verficando licencia", así cuando vuelvas a abrir el archivo solo se verá esa hoja. De más esta decir que tienes que proteger el libro con una contraseña que solo tu conozcas.
En el evento AutoOpen del módulo ThisWorkbook pones el siguiente código:
Private Sub AutoOpen()
dim codigoHoja as string
dim codigoArch as string
codigoHoja = Evaluate(names("license").value)
If Dir("C:\licenciaSistemaExcel\licencia.txt")<>"" Then
Open "C:\licenciaSistemaExcel\licencia.txt" For Input As #1
Line Input #1, codigoArch
Close #1
If codigoHoja = codigoArch then
Msgbox "Licencia válida"
... Y aquí vuelves a mostrar todas las hojas del archivo... y ocultas la del menu inicial
Else
Msgbox "Numero de licencia no valido"
Application.Displayalerts=false
Application.quit
End if
Else
Msgbox "no se encontró archivo de licencia"
Application.Displayalerts=false
Application.quit.
End if