jueves, 15 de septiembre de 2011

Proteger y desproteger proyectos VBA en Excel.

En ocasiones, al desarrollar nuestro trabajo, hemos generado alguna macro o código VBA en nuestras hojas de cálculo; y estos ficheros los compartimos con compañeros 'peligrosos' para nuestras programaciones. ¿Qué podemos hacer para proteger o desproteger nuestros proyectos en VBA de Excel?.
El proceso es muy sencillo.
Accederemos al Editor de VBA (Alt+F11) y buscaremos en el Explorador de proyectos el VBAProject a proteger (no es posible proteger/desproteger módulos independientes dentro del proyecto).
Con el botón derecho del ratón o bien desde el Menú Herramientas haremos click sobre las Propiedades de VBAProject...

Proteger y desproteger proyectos VBA en Excel.


Aparecerá la siguiente ventana, donde marcaremos Bloquear proyecto para visualización, para luego introducir y confirmar la contraseña, todo esto dentro de la pestaña Protección:

Proteger y desproteger proyectos VBA en Excel.


El siguiente y último paso es cerrar y guardar nuestro fichero. La siguiente vez que abramos nuestro Libro de trabajo, e intentemos visualizar las macros en él contenidas, surgirá una ventana solicitando la contraseña dada:

Proteger y desproteger proyectos VBA en Excel.


Cuidado por que sin dicha contraseña no podremos modificar ni crear nuevas macros en dicho proyecto!!!

9 comentarios:

  1. muy buen aporte, me ha sido muy útil.
    :)

    ResponderEliminar
  2. Excelente, gracias por el aporte

    ResponderEliminar
  3. gracias amigo, a tiempo....

    ResponderEliminar
  4. Si se abre el archivo con Open Office, se puede ver todo el código del proyecto sin problemas aunque se proteja desde Excel. (Lo he comprobado). ¿Hay alguna forma de evitar esto?

    ResponderEliminar
    Respuestas
    1. Hola que tal?
      un placer saludarte.
      Convertir en un Add-in las macros... posiblemente así se evite la situación que indicas.
      Saludos

      Eliminar
    2. Muchas gracias por tu respuesta.
      Esta solución es perfecta cuando los libros se ejecutan en mi máquina. Mi problema es cuando el libro (no compartido para que no pueda sr modificado por más de uno a la vez), se aloja en un servidor donde varios usuarios deben actualizar distintos valores. Programé macros para que cada uno tuviera acceso a un número limitado de hojas, con usuario y contraseña por supuesto.
      Todo iba bien hasta que un listillo abrió el libro con LibreOffice, y aunque no funcionaban muchas cosas, se podía ver todo el proyecto vba. Entonces convertí el libro en un .xlsb oculto en una carpeta remota, y pasé todas las macros a un .xlam que lo lanza una vez hayan superado la autenticación. Pero esto sigue pareciéndome poco seguro. ¿Existe alguna manera mas segura a tu juicio?. ¿Se puede hacer que un libro .xlam sea operativo y poder trabajar con sus hojas?.
      Muchísimas gracias de antemano y un afectuoso saludo.

      Eliminar
    3. Hola!
      pues difícil cuestión.. ya que los complementos (cualquiera sea su formato) obviamente necesitan acompañar al fichero principal.
      Existe un formato de complemento .xll (tipo librería) que es muchísimo más seguro frente a usuarios no deseados. Podrías convertir tu complemento .xla en .xll... pero el lenguaje requerido para este tipo de add-in es C y algún otro diferente a VBA.

      Un saludo

      Eliminar
    4. Gracias de nuevo.
      Como yo no se nada de C, seguiré con mi método, que de momento funciona, ya que nadie ha sido capaz de ver el path del libro oculto...
      Saludos.

      Eliminar