Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como LISTAR HOJAS en Listbox y HACER COPIA de RESGUARDO de la HOJA Seleccionada en Excel VBA #602

Backup de hojas de Excel

COMO HACER UN BACKUP DE LAS HOJAS DE EXCEL

Hoy vamos a realizar en forma fácil una macro para hacer un backup de una hoja de Excel, se van a listar las hojas en listbox y luego de seleccionar la hoja la macro automáticamente hará una copia de seguridad de la hoja seleccionada, guardando el backup con un nombre específico además de la fecha y hora del resguardo de seguridad.

Aprende a operar Excel, 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.

Ejemplo Macro como crear backup en forma sencilla de una hoja de Excel – VBA

El ejemplo consiste en que al presionar el botón que se encuentra en el libro de Excel de ejemplo, se muestra un formulario que lista todas las hojas existentes, luego de ello se puede seleccionar una hoja o varias hojas de las listadas y al presionar el botón que está en el formulario se realiza un backup de la hoja seleccionada.

El backup se guarda en una carpeta denominada «BACKUP», que se encuentra en el escritorio de Windows o Desktop de Windows, si la carpeta existe guarda el backup en dicho directorio, sino existe crea la carpeta y guarda el backup.

Código para realizar copia de seguridad de una hoja de excel

El código para crear un resguardo de seguridad de las hojas existentes en el libro de Excel y que son seleccionadas hace un bucle que va desde 1 hasta el último ítem del listbox, recuerden que los items o filas se empiezan a contar desde cero, pero en la fila cero está el encabezado por ello el bucle empieza en 1, el codigo es:

For j = 1 To ListBox1.ListCount – 1

Luego para el ítem o fila que va recorriendo el bucle se verifica si está seleccionada, asi:

If ListBox1.Selected(j) = True Then

En caso que esté seleccionado el ítem o elemento de la fila del listbox, significa que de dicha hoja se tiene que hacer un backup o resguardo de seguridad, para ello determinamos el nombre de la hoja que figura seleccionada y está dada por la fila del listbox seleccionada columna 0 ya que está en la primer columna del listbox, asi:

Myhoja = ListBox1.List(j, 0)

Luego determinamos la dirección donde se creará la copia de seguridad de la hoja de Excel,  para que este ejemplo sea funcional al descargar y presionar el botón de backup funcione, vamos a hacer que la macro detecte automáticamente cual es la dirección del escritorio de Windows o Desktop, adicionando a dicha dirección el nombre de la carpeta o directorio que denominaremos «BACKUP», el código es el siguiente:

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

Verificamos que si la carpeta «BACKUP» ya existe, en caso negativo la crea asi:

If Dir(Direc, vbDirectory) = «» Then MkDir Direc 

Luego hace una copia de la hoja, el código siguiente crea un libro nuevo con una copia de la hoja-

Sheets(Myhoja).Copy

Ahora determinamos, cual será el nombre del archivo con la hoja copiada, y para ello concatenaremos el nombre de la hoja que hay lo obtuvimos más arriba y esta en la variable denominada «Myhoja».

nom = Myhoja

También formateamos la fecha actual y hora actual y lo cargamos en una variable, así:

nomfecha = Format(Date, «ddmmyyyy»)
nomhora = Format(Time, «hhmmss»)

Luego formamos la ruta del directorio donde se guardará el backup de respaldo; formamos la ruta del archivo de backup que contiene el resguardo de seguridad de la hoja deseada.

Para concatenar las variables y formar ruta y nombre del fichero, unimos la variable Direc donde estaba la ruta del directorio donde estára el achivo (recordemos que lo guardaremos en el escritorio de Windows en la carpeta «BACKUP»)-

Luego concatenamos variables para formar el nombre del archivo, que estará dado por la palabra «BACKUP», más el nombre de la hoja, más la fecha actual, más la hora actual y la extnsión del archivo de Excel  (xlsx), el código es el siguinte:

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

Pro último guardamos el archivo que se creo al hacer la copia con el nombre determinado y cargado en la variable «nomarchi1 » y erramos el archivo, con el siguiente código:

ActiveWorkbook.SaveAs Filename:=nomarchi1, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True

Cuando termina la macro sale un mensaje avisando que el Backup de la hoja de Excel se creo con éxito.

MsgBox («El backup de la/las hoja/s relizó con éxito»), vbInformation, «AVISO»

Código VBA para crear una copia – backup de una hoja en forma fácil

Código que va en el Userform

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

For j = 1 To ListBox1.ListCount – 1
If ListBox1.Selected(j) = True Then
Myhoja = ListBox1.List(j, 0)
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

Sheets(Myhoja).Copy

nom = Myhoja
nomfecha = Format(Date, «ddmmyyyy»)
nomhora = Format(Time, «hhmmss»)
nomarchi1 = Direc & «BACKUP» & » » & nom & » » & nomfecha & » » & nomhora & «.xlsx»

ActiveWorkbook.SaveAs Filename:=nomarchi1, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True
End If

Next j

MsgBox («El backup de la/las hoja/s relizó con éxito»), vbInformation, «AVISO»
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Private Sub CommandButton26_Click()
Unload UserForm1
End Sub

Private Sub UserForm_Initialize()
On Error Resume Next
UserForm1.ListBox1.AddItem «Nombre Hoja»

For Each hoja In Worksheets
mihoja = hoja.Name
UserForm1.ListBox1.AddItem mihoja
Next hoja
End Sub


Código que va en un módulo

Sub quitafiltro()
If Sheets(«BD URL»).FilterMode = True Then Sheets(«BD URL»).ShowAllData
End Sub

Sub muestrauserform()
UserForm1.Show
End Sub


Descarga libro de Excel del Ejemplo Como crear un Backup de Hojas de Excel

Descarga desde acá el archivo de este ejemplo que se usa 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