web analytics

Plantilla para controlar los cambios en un archivo Excel con VBA

Una vez me pidieron si era posible controlar los cambios que se realizan en un libro Excel sin que el usuario lo sepa, como siempre digo, es solo cuestión de tiempo, con Office y VBA se pueden hacer muchísimas cosas antes de llegar a un límite que difícilmente se alcanzará en un entorno ofimático normal, no hablamos de un ERP para gestionar un negocio de millones de euros ni de un videojuego de última generación, hablamos de ofimática, escribir, calcular y presentar, y para estos menesteres y para el común de los mortales las macros con VBA son más que suficiente.

Obviamente, Excel incorpora un sistema de control de cambios (p.e. aquí), pero además de ser más obvio para el usuario nos obliga a compartir el libro y nos puede limitar en ciertas funciones, pero por otro lado este método con VBA me provocó un problema importante y es que no se pueden deshacer los cambios, cada vez que se ejecuta código VBA la pila de deshacer (undo stack para los amigos) se vacía, y en este tipo de plantilla que se ejecuta VBA todo el rato es un problema, incluso los usuarios mas avezados se darán cuenta que algo sucede con la opción deshacer, desgraciadamente se tiene que decir aquello tan manido de:  «no es un bug es una feature«, hay soluciones más o menos completas para parchear esta característica que pasan por hacer un copia del estado del libro antes de ejecutar la macro, pero como tampoco me acababa de gustar y no tenia tiempo no lo programé.

Entonces hay que valorar que queremos, deshacer las cosas o secretismo, como en este caso se trataba más de investigar sobre el mal uso de un archivo Excel la opción fue hacerlo mediante VBA.

Leer más

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.

Leer más