BACKUP EN EXCEL COMPRIMIDO EN UN ZIP CON MACRO VBA
En este ejemplo veremos como crear una macro para realizar backup o copias de seguridad del archivo de Excel que estemos usando, pero en formato comprimido o ZIP, es decir la macro creará un archivo ZIP con el archivo de Excel actual comprimiéndolo.
Maneja 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.
COPIA DE RESGUARDO DE FICHERO DE EXCEL EN UN ARCHIVO COMPRIMIDO ZIP
En el ejemplo al presionar el botón que se encuentra en la hoja de Excel, la macro de Excel crea una copia de seguridad o backup del archivo de Excel en uso actualmente, pero dicha copia de resguardo se crea en formato comprimido ZIP, con ello se disminuye mucho el peso de los archivos de los cuales se hace el backup.
El archivo ZIP de se crea en una carpeta denominada BACKUP que la macro crea en caso de no existir en el escritorio de Windows.
Explicación de la MACRO para genera un BACKUP en EXCEL en formato comprimido ZIP
Como se dijo anteriormente la macro crea la carpeta o directorio donde estará la copia de seguridad del archivo de Excel, para ello detecta la dirección donde se encuentra el escritorio, agregando la carpeta BACKUP en caso que no estuviere creada, dicha dirección se guarda en la variable «Direc»; con el siguiente código:
Direc = CreateObject(«wscript.shell»).specialfolders(«desktop») & «\BACKUP\»
Si la carpeta no está la crea con el siguiente código:
If Dir(Direc, vbDirectory) = «» Then MkDir Direc ‘Verifica si existe la carpeta o directorio, si no existe lo crea
Posteriormente se determina el nombre del archivo que estamos usando y sobre el cual se hará el backup de seguridad, para ello extraemos del nombre del archivo la extensión para poder formar el nombre del archivo de resguardo comprimido en fichero ZIP, se usa el siguiente ódigo:
nom = ActiveWorkbook.Name
lar = InStr(nom, «.»)
nom = Left(nom, lar – 1)
Luego se formatea la fecha actual y hora, ya que el nombre del archivo llevará la fecha y hora en la que se realizó el backup, así:
nomfecha = Format(Date, «ddmmyyyy»)
nomhora = Format(Time, «hhmmss»)
Luego se determinar el nombre del archivo de Excel que se comprimirá y el nombre del archivo ZIP comprimido, que contendrá el fichero de Excel, asi:
nomarchi1 = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.xlsm»
nomarZip = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.zip»
Posteriormente creamos el nuevo libro nombrándolo como se estableció en el párrafo anterior, con el siguiente código, tener en cuenta que se crea una copia de seguridad y se sigue trabajando en el mismo archivo, se usa el código:
ThisWorkbook.SaveCopyAs nomarchi1 ‘Crea backup y se sigue trabajando en libro original
Luego vienen los pasos para crear el archivo ZIP que son:
Set SApp = CreateObject(«Shell.Application»)
Open nomarZip For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
Por último guardamos los archivos de Excel a realizar el backpup en el archivo comprimido, de la siguiente forma:
SApp.Namespace(nomarZip).CopyHere nomarchi1
Esperamos unos segundos para que termine de comprimir y luego sigue la macro con la codificación:
Application.Wait (Now + TimeValue(«00:00:02»))
Se procede a borrrar el archivo de Excel creado y que luego guardamos como archivo comprimido:
Kill nomarchi1
Por último sale un mensaje, diciendo que el backup se creó con éxito:
MsgBox («El Backup ZIP se creo con éxito»), vbInformation, «AVISO»
Código VBA para CREAR COPIADE RESGUARDO DE ARCHIVO EXCEL EN FORMA COMPRIMIDA
Código que se coloca en un módulo de VBA
Sub Backup()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim SApp As Object
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»
nomarZip = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.zip»
ThisWorkbook.SaveCopyAs nomarchi1 ‘Crea backup y se sigue trabajando en libro original
Set SApp = CreateObject(«Shell.Application»)
Open nomarZip For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
SApp.Namespace(nomarZip).CopyHere nomarchi1
Application.Wait (Now + TimeValue(«00:00:02»))
Kill nomarchi1
MsgBox («El Backup ZIP se creo con éxito»), vbInformation, «AVISO»
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Descarga el Ejemplo COMO HACER UN BACKUP EN FORMATO ZIP O COMPRIMIDO
Descarga el fichero 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.
👉⏩ Apoya mi trabajo https://www.patreon.com/programarexcel
👉⏩ Sígueme en DTube: https://d.tube/#!/c/programarexcel01
👉⏩ Sígueme en Odysee: https://odysee.com/@programarexcel:3
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