es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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. 😉

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para bloquear el proyecto de VBA utilizando VBA, puedes usar el siguiente código:

    Sub BloquearProyectoVBA()
        Dim vbProj As Object
        Dim strPassword As String
    
        'Establecer la contraseña para proteger el proyecto de VBA
        strPassword = "MiContraseña"
    
        'Obtener el objeto VBAProject
        Set vbProj = ThisWorkbook.VBProject
    
        'Bloquear el proyecto con la contraseña especificada
        vbProj.Locked = True
        vbProj.Protect strPassword
    
    End Sub
    

    En este código, primero declaramos dos variables: vbProj para almacenar el objeto VBAProject y strPassword 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 variable vbProj.

    A continuación, establecemos la propiedad Locked del objeto vbProj en True. Esto asegura que el proyecto esté bloqueado para ver y editar.

    Finalmente, llamamos al método Protect del objeto vbProj, 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:

    Sub DesbloquearProyectoVBA()
        Dim vbProj As Object
    
        'Obtener el objeto VBAProject
        Set vbProj = ThisWorkbook.VBProject
    
        'Desbloquear el proyecto
        vbProj.Password = ""
        vbProj.Locked = False
    
    End Sub
    

    En este código, nuevamente utilizamos la palabra clave Set para asignar el objeto VBAProject a la variable vbProj.

    Luego establecemos la propiedad Password del objeto vbProj como una cadena vacía, eliminando efectivamente la protección por contraseña.

    Finalmente, establecemos la propiedad Locked del objeto vbProj en False, desbloqueando el proyecto para ver y editar.

Comments are closed.