Como hacer un Backup al cerrar el archivo de Excel

Me gustaría saber cómo puedo hacer un Backup desde código vba del archivo de excel con el que estoy trabajando a la hora de cerrarlo en una carpeta específica tomando las siguientes consideraciones:

El archivo que estoy trabajando ya va a tener un nombre y el archivo que se va a guardar tiene que guardarse con el nombre de backup en una ruta específica y si esa ruta no existe pues entonces que la cree.

Si el archivo ya existe que lo reemplace, no quiero que cree copias en conflicto.

Creo que eso sería todo.

1 respuesta

Respuesta
2

En el evento BeforeClose del libro debes agregar la instrucción :

ActiveWorkbook.SavaCopyAs ruta & libro

Donde "ruta" sera la que referencia de la carpeta y previamente hay que revisar si se encuentra o no.

Para avanzar con el código aclarame cómo le vas a indicar a la macro cual es la ruta... ¿Estará en alguna celda? ¿Se lo indicadas con un InputBox?

También dejame escrito un ejemplo de como debiera verse el nombre completo del libro, para ver su extensión (xls, ¿xlsm?)

Sdos.

Elsa

La ruta es la misma siempre por lo que conviene más colocarla directamente en el código, supongamos que la ruta es en el escritorio y el archivo se va a llamar backup.xlsm

Saludos.

Entonces en el objeto ThisWorkbook debes colocar esta macro:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'x Elsamatilde
Dim rutacopia As String, nbrecopia As String
rutacopia = "C:\"          'ajustar
nbrecopia = "backup.xlsm"  'ajustar
ActiveWorkbook.SaveCopyAs rutacopia & nbrecopia
End Sub

Podés ajustar los datos que los coloqué en variables.

Sdos!

Buenas, el código me sirve perfectamente cuando lo uso por primera vez pero al cerrar mi documento por segunda vez lanza el siguiente error...

Debe de ser porque el archivo ya existe, cómo lo sobreescribo?

No, no es eso. Dejame escrita tus 2 instrucciones.

Sdos!

'x Elsamatilde
Dim rutacopia As String, nbrecopia As String
rutacopia = "C:\Users\Gonzalo\Desktop\Backup\Backup.xlsm" 'ajustar
ActiveWorkbook.SaveCopyAs rutacopia

Eso es lo que tengo

Este mensaje te aparece cuando intentas guardar el libro Backup, no tu original.

Y eso porque no podés hacer un SaveCopyAs con el mismo nombre.

Para evitar que te salte error si por alguna razón utilizas y guardas el libro Backup, te agrego un control :

If Left(ActiveWorkbook.Name, 6) <> "backup" Then
ActiveWorkbook.SaveCopyAs rutacopia
End If

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas