Hoy vamos a aprender como hacer backups automáticos con VBA en Excel a través de código, para ello os dejo la última «receta» en formato vídeo como siempre.
Basicamente lo que os describo es como podemos suscribirnos al evento que se produce cuando la hoja cambia y es que, cuando se produce un cambio en una hoja, Excel hace una llamada a la implementación de un metodo llamado SheetChange y el código que tengamos en dicho metodo se ejecutará una vez que se haga un cambio en una celda o en una parte de la hoja.
Como aclaración comentaros que dicho evento no se dispara si el cambio se realiza en un gráfico.
El código
Private Sub Workbook_SheetChange(ByVal Sh as Object, ByVal Target as Range)
Dim nombreFichero as String
nombreFichero = "c:\temp\Excel\" & Year(Date) & Month(Date) & Day(Date) &Hour(Time) & Minute(Time) & Second(Time) &".xlsx"
ThisWorkbook.SaveAs Filename:=nombreFichero
End Sub
También aclarar que significan los parametros de entrada del manejador del evento: «Sh as Object» representa a la hoja que se ha modificado y por otro lado «Target as Range» contiene el rango que se ha modificado en dicha hoja, con lo que sería muy sencillo obtener los datos exactos que corresponden a la modificación (que se ha modificado, y donde).
El vídeo tutorial
¿Que hemos aprendido?
Con esta receta de Excel hemos aprendido algunas cosas interesantes, tales como:
- Como guardar un libro de Excel automáticamente
- Extraer información de fecha y hora del sistema
- Suscribirnos al evento SheetChange
Como siempre os digo, espero que esta entrada os haya sido de utilidad, nos vemos pronto.
2 comments On Como hacer backups automáticos con VBA en Excel
Hola una pregunta al final del codigo me envia un error y no ejecuta la macro, me indica que no se puede usar esta extencion con el tipo de archivo seleccionado
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim nombreFichero As String
nombreFichero = «c:\escritorio\» & Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time) & Second(Time) & «.xlsx»
ThisWorkbook.SaveAs Filename:=nombreFichero (aqui en donde me muestra el erro)
End Sub
Hola Uriel,
gracias por tu comentario. Basicamente estas intentando grabar un fichero con macros con la extension .xlsx. Si quieres grabarlo debes usar un fichero con extension .xlsm (documento habilitado para macros)
Saludos.
Josematube.