
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