web analytics

Recuperando el código VBA protegido de un archivo Excel 2003 con un Excel 2010

Llevaba un par de días buscando información para poder desbloquear un .xlsm que realicé hace ya un tiempo.

Lo de conocer la contraseña de desprotección de la hoja y el libro es trivial eso está más que explicado en cientos de sitios (como [1], [2] o [3]) y con una breve búsqueda lo encontramos, es tan sencillo como insertar una macro, pero ¿Y si no tenemos acceso al código VBA?

Mi problema era desproteger la contraseña que se introduce en el proyecto VBA, no podía ni acceder ni ver el código del archivo, había encontrado varios sitios en que lo explicaban (como [1], [2] o [3])  pero parecía no funcionar y algo tenía que ver que intentaba abrir un archivo .xlsm generado y protegido con Excel 2003 en un Excel 2010.

Petición de contraseña de un proyecto VBA
Petición de contraseña de un proyecto VBA

La solución

  1. Haz una copia de seguridad del archivo a desproteger (por si algo va mal)
  2. Abre el archivo .xlsm que quieres desproteger desde Excel (en mi caso versión 2010)
  3. PASO IMPORTANTE: Guardar como… un archivo .xls (esto es importante, seguramente nos de advertencias de pérdidas de compatibilidad, pero le daremos a continuar)
  4. Una vez guardado el .xls cierra el Excel
  5. Abre el archivo .xls desde un editor hexadecimal (yo he usado el HexEdit)
  6. Busca la palabra DPB

    Editor Hexadecimal, localización de DPB
    Editor Hexadecimal, localización de DPB
  7. Cambia DPB por DPx (esto provocará un fallo por el que no reconocerá la clave y provocará que esta quede inutilizada)

    Editor Hexadecimal, cambio de valor DPx
    Editor Hexadecimal, cambio de valor DPx
  8. Guarda el archivo y cierra el editor hexadecimal.
  9. Abre el archivo .xls normalmente.
  10. Abre el código VBA (ALT+F11) y te saltará una advertencia de que la clave DPx no es válida, simplemente sigue para adelante, pero aún no podrás ver el código te saltará una advertencia de «Error no esperado»
    Advertencia de clave no válida
    Advertencia de clave no válida

    Advertencia
    Advertencia de «Error no esperado»
  11. PASO IMPORTANTE: Para solucionarlo simplemente lo volvemos a Guardar Como… un .xlsm 
  12. Volvemos al editor VBA (ALT+F11) y listo, ya podemos verlo!! (la línea de código roja indica un problema en la compatibilidad entre versiones de 32bits y 64 bits pero eso es otro tema)
Visión del código del Proyecto VBA
Visión del código del Proyecto VBA

En mi caso la clave estaba en la conversión de .xlsm a .xls y viceversa. al abrir un archivo desde diferentes versiones. Si todo es desde la misma versión no debería ser necesario hacer esto.




Suscribir
Notificar de

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

4 Comentarios
Inline Feedbacks
Ver todos los comentarios
andres velez mendoza
andres velez mendoza
8 años atrás

Amigo que gran aporte todo ok para modificar la vba de la macro

Anónimo
Anónimo
8 años atrás

Me fue de muy buena ayuda, muchas gracias, un buen aporte. Gracias

4
0
Me encantaría conocer tú opinión sobre esta entrada, por favor comentax