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.

Vamos a la cuestión

Nada más poner en marcha la plantilla nos solicitará que activemos las macros, una vez activadas nos mostrará la Hoja1 tal y como se ve en la segunda imagen siguiente.

Aviso de activación de macros
Captura2
Hoja inicial de la plantilla

Borraremos esta hoja base o la modificaremos para usarla como cualquier libro por ejemplo creamos una tabla y la modificamos

Tabla de ejemplo
Tabla de ejemplo modificada

Presionando CTRL+SHIFT+L ejecutaremos la macro que nos mostrará la hoja de LOG y veremos en ella los cambios realizados

Ventana de contraseña para ver la hoja de LOG
Muestra del fichero de LOG con los cambios en la tabla de ejemplo

El LOG nos mostrará lo siguiente:

  • Fecha en que se realizó el cambio.
  • Ordenador y nombre de usuario del sistema en que se realizó el cambio.
  • La acción realizada en concreto. Guarda lo siguiente:
    • Se cambia el nombre de una hoja.
    • Se borra una hoja
    • Se crea una hoja
    • Se cambia el contenido de una celda
    • Se cambia el contenido de un rango
    • Se guarda el libro
  • Hoja afectada por el cambio.
  • Rango afectado por el cambio.
  • Columna y filas afectadas por el cambio.
  • Valor anterior al cambio y el actual.

A tener en cuenta

  • Usando esta plantilla se pierde la posibilidad de deshacer los cambios (ya lo he comentado más arriba en este mismo post)
  • Hay una limitación en la cantidad de celdas individuales simultáneas de las que se pueden registrar los cambios. Es un parámetro que se puede modificar en el código fuente, por defecto es 500 celdas. Depende de la potencia del equipo poder poner más o menos. Si es superior simplemente nos indicará que hay un cambio en un rango completo.
  • La contraseña para ejecutar la macro es «manteniendo»
  • La contraseña para poder editar y visualizar el código VBA la puedes descargar si estás suscrito a mi blog.
  • Puedes modificar la plantilla como te plazca, sólo te pido que respetes parte de la autoría del código. Vamos que me menciones si la distribuyes.
  • Te vas a tener que inventar una excusa para que el usuario ejecute esta hoja con macros (o hacerlo un archivo de confianza antes de que se entere).

Icono
Plantilla excel de control de cambios

El archivo contiene:

  • La plantilla en formato Excel 2010 para macros (.xlsm)
  • Y si te da miedo también está sin macros (.xlsx) y con el código aparte en un archivo de texto, para que lo pegues tu mismo y veas que no hay nada raro en el código VBA.

Testeado únicamente en Excel 2013 32bit.

Condiciones de descarga
Manteniendo.com declina cualquier responsabilidad en caso de que existan interrupciones o un mal funcionamiento en el software descargado, de los servicios o contenidos ofrecidos en Internet, cualquiera que sea su causa. Asimismo, el Titular no se hace responsable por caídas de la red, pérdidas de negocio a consecuencia de dichas caídas, suspensiones temporales de fluido eléctrico o cualquier otro tipo de daño indirecto que te pueda ser causado por causas ajenas a el Titular. El titular no ofrece ninguna garantía por el software del web. Tanto el software como cualquier documentación es entregada tal cual, sin ningún tipo de garantía ni información añadida. La responsabilidad del uso que se haga del software descargado, así como de las consecuencias de dicho uso, es exclusivamente del usuario.

Si quieres poder editar el archivo, en el siguiente enlace tienes la contraseña para la hoja excel, para descargarla deberás estar suscrito a mi blog.




Suscribir
Notificar de

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

18 Comentarios
Inline Feedbacks
Ver todos los comentarios
TXUSLAHEAVY
TXUSLAHEAVY
3 años atrás

hola!! no consigo abrirla, me dice que la contraseña es incorrecta

jkkjk kjkjk
jkkjk kjkjk
4 años atrás

Muchas gracias por compartir, sin pedir nada a cambio, esas son las cosas que valen la pena

Gonzalo Fernandez
Gonzalo Fernandez
4 años atrás

Hola, esta muy buena la planilla, gracias por compartirla. Me gustaria saber como puedo cambiar la contraseña para mostrar las hojas ocultas. La busco en el código pero no esta, en las propiedades del libro hay unas contraseñas pero no estoy seguro que sea eso.

refuh
refuh
6 años atrás

Hola amigo muy Buena aportacion y felicitaciones, solo una pregunta como puedo poner nuevamente funcionar la macros porque corro la marcros y no registra cambios.

Saludos

Ricardo
Ricardo
6 años atrás

Hola, buenas tardes… felicitaciones por tu control de cambios, está bien útil.

Una consulta, tu comentas que el control de cambios de excel es super robusto, etc., pero al mismo tiempo mas arriba habías comentado que tiene varias limitantes, podrías decirnos a tu criterio cuales son esas limitantes?

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

hola me encanta tu trabajo, tengo una duda, como puedo reiniciar el control de cambios, es decir que se borren todos y vuelva a comenzar, agradeceria tu respuesta

Luis
Luis
7 años atrás

Buenas tardes para ver el contenido de vba me pide clave cual es?

8 años atrás

Hola, me encanta su blog, me parece sumamente útil.
En concreto esta plantilla está genial, solo quería preguntarle una cosa. En mi caso necesito el control de cambios para controlarme a mí mismo, no necesito que sea secreto, y además me sería muy útil que lo hiciese automáticamente sin tener que activar la macro cada vez. ¿Sabe si eso sería posible?

Gracias
Saludos

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