Proteger VBAProject utilizando VBA
Tengo un libro principal con mucho código VBA, que recopila datos de otros libros, manipula esos datos y finalmente escribe la salida de datos en un nuevo libro que a su vez contiene un poco de código VBA. Este libro de salida se envía a muchas personas que NO deben poder cambiar ni ver el código VBA.
Por lo tanto, tengo que bloquear el proyecto VBA para que no se pueda ver. Dado que los usuarios de mi libro principal no tienen ninguna habilidad en VBA, no quiero que ellos bloqueen el proyecto VBA (en el editor de VBA: Menú Herramientas / Propiedades del proyecto VBA… / Protección / Bloquear proyecto para ver / etc.). Prefiero bloquear el proyecto VBA usando VBA.
He visto que esto se puede hacer mediante varias SendKeys. Sin embargo, no me gusta usar SendKeys. En cambio, prefiero hacerlo con VBA “real” – pero cómo hacerlo? ¿Quizás utilizando algunas funciones de API de Windows? – de las cuales no tengo ni idea, pero puedo usar si solo tengo que copiar y pegar algo de código. 😉
davy.ai
Para bloquear el proyecto de VBA utilizando VBA, puedes usar el siguiente código:
En este código, primero declaramos dos variables:
vbProj
para almacenar el objeto VBAProject ystrPassword
para almacenar la contraseña que queremos utilizar para proteger el proyecto.Luego utilizamos la palabra clave
Set
para asignar el objeto VBAProject del libro actual a la variablevbProj
.A continuación, establecemos la propiedad
Locked
del objetovbProj
enTrue
. Esto asegura que el proyecto esté bloqueado para ver y editar.Finalmente, llamamos al método
Protect
del objetovbProj
, pasando nuestra contraseña elegida como argumento. Este método protege el proyecto con la contraseña que proporcionamos, asegurando que solo los usuarios que conozcan la contraseña puedan ver o editar el código VBA.Ten en cuenta que si deseas desbloquear el proyecto de VBA en un momento posterior, puedes utilizar el siguiente código:
En este código, nuevamente utilizamos la palabra clave
Set
para asignar el objeto VBAProject a la variablevbProj
.Luego establecemos la propiedad
Password
del objetovbProj
como una cadena vacía, eliminando efectivamente la protección por contraseña.Finalmente, establecemos la propiedad
Locked
del objetovbProj
enFalse
, desbloqueando el proyecto para ver y editar.