Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como Crear BACKUP AUTOMATICO al CERRAR ARCHIVO de Excel con VBA #597

B

MACRO de EXCEL PARA COPIA DE RESGUARDO AUTOMÁTICA AL CERRAR EL ARCHIVO

En este ejemplo muestro algo que pidió un suscriptor de nuestro canal de You Tube y se trata de una macro que permita crear una copia de seguridad o backup en forma automática en el momento de cerrar el archivo, bien pues la macro que se presenta hace eso, en el momento que se va a cerrar el archivo automáticamente en forma previa se crea una copia de seguridad del archivo de Excel que se requiere cerrar.

Maneja Microsoft Excel como los mejores, deberías hacer click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

Puedes ver la macro en acción y una explicación más detallada de su codificación y funcionamiento, descarga el archivo y mira el video para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Backup de Seguridad al CERRAR ARCHIVO

La macro es bastante sencilla y cumple con lo que requería el suscriptor de nuestro canal, es decir en forma automática cuando se cierre el archivo de Excel usado en ese momento y el cual se desea cerrar, la macro hará una copia de resguardo o backup del archivo de Excel, sin que el usuario tenga que hacer absolutamente nada.

En otras palabras, una vez que salgamos del fichero de Excel usado, la macro previamente hará una copia de resguardo del mismo archivo del cual se requiere salir.

Explicación de la Macro para Crear un Backup Automático al salir del archivo Excel

La macro de Excel va a detectar que se está intentando salir o cerrar el archivo de Excel del cual se requiere hacer un backup, ello se logra  colocando la macro a ejecutar en el evento «Close» de ThisWorkbook, y llamando a la macro denominada «Backup» cuyo código se encuentra en un módulo, de la siguiente forma:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Backup
End Sub

La macro detecta que se intenta cerrar el libro y antes de cerrarlo ejecutará la macro «Backup», dicha macro contiene el código para realizar el backup del archivo de Excel que se está usando en ese momento y el cual se pretende cerrar.

Para ello el código llamado «Backup» el cual se llama y ejecuta antes de cerrar el archivo, establece cual es la dirección la carpeta donde se guardará el backup, en este ejemplo se utiliza el escritorio de Windows y en este en una carpeta denominada también «BACKUP», en esta variable deben ingresar cuando adapte cada uno a su proyecto la dirección en la cual se desea se guardo el archivo de resguardo que creará la macro, el código usado es:

Direc = CreateObject(«wscript.shell»).specialfolders(«desktop») & «\BACKUP\»

La macro para que no provoque errores, determinará si en el escritorio de Windows se encuentra la carpeta «BACKUP», en caso positivo realiza la copia en caso negativo previamente crea la carpeta, el código es el siguiente:

If Dir(Direc, vbDirectory) = «» Then MkDir Direc ‘Verifica si existe la carpeta o directorio, si no existe lo crea.

Luego se establece el nombre del archivo de resguardo o backup, el cual está compuesto por el nombre del archivo actual, al cual hay que sacarle la extensión (sacar .xlsm), solamente necesitamos el nombre del archivo sin la extensión, así:

nom = ActiveWorkbook.Name
lar = InStr(nom, «.»)
nom = Left(nom, lar – 1)

Luego se carga en la variable «nomfecha» la fecha actual en formato «ddmmyyyy», de esta forma:

nomfecha = Format(Date, «ddmmyyyy»)

También se carga la hora en que se realiza el backup, el cual se carga en la variable «nomhora» con el formato «hhmmss», el código usado es:

nomhora = Format(Time, «hhmmss»)

Luego se concatenan todas las variables y se obtiene el nombre del archivo que contendrá la copia de resguardo o backup del fichero de Excel, de la siguiente manera:

nomarchi1 = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.xlsm»

Por último se utiliza el comando que crea la copia de seguridad o backup del archivo de Excel, asi:

ThisWorkbook.SaveCopyAs nomarchi1 ‘Crea backup y se sigue trabajando en libro original

Al dar la orden para cerrar el archivo de Excel se crea el backup y se cierra el fichero sin que el usuario lo sepa, pero se puede poner, este ejemplo no lo tiene, un msgbox para que avise que el backup del archivo de Excel se realizó con éxito, el código sería:

msgbox(«El backup se realizó con éxito»)

Código Excel VBA para REALIZAR copia de SEGURIDAD AL CERRAR EL ARCHIVO

Código que se coloca en  ThisWorkbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Call Backup
End Sub

Código que se coloca en un módulo de VBA

Sub Backup()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Direc = CreateObject(«wscript.shell»).specialfolders(«desktop») & «\BACKUP\»

If Dir(Direc, vbDirectory) = «» Then MkDir Direc ‘Verifica si existe la carpeta o directorio, si no existe lo crea

nom = ActiveWorkbook.Name
lar = InStr(nom, «.»)
nom = Left(nom, lar – 1)
nomfecha = Format(Date, «ddmmyyyy»)
nomhora = Format(Time, «hhmmss»)
nomarchi1 = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.xlsm»

ThisWorkbook.SaveCopyAs nomarchi1 ‘Crea backup y se sigue trabajando en libro original

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Descarga archivo con Macro Backup automático al cerrar fichero

Desde esta sección puedes descargar el archivo usado como ejemplo en este post y en el vídeo explicativo, el mismo es totalmente gratuito y libre su uso, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel

Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd

Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407

Cuenta Skrill: marcrodos@yahoo.es

Cuenta Neteller: marcrodos@yahoo.es