Ampliación a copia de seguridad que cree carpeta y subcarpeta para guardar archivo
Al código que me ha remitido Dante Amor, y que funciona fenomenalmente bien, necesitaría incluir las siguientes modificaciones, a saber:
Que la copia de seguridad no se guarde en la misma ruta que el original, que se guarde en otra ruta distinta, en red; y con extensión "xls"
Ejemplo: "\\NombrePc\Usuario\Copia de Seguridad\*...\**...\NombredelArchivo.xls"
*Aquí iría la carpeta "Año", creada con tu código.
**Y aquí la subcarpeta "Mes", creada por tu mismo código.
Sub Respaldo()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ThisWorkbook.Save
nom1 = ThisWorkbook.FullName
nom2 = ThisWorkbook.Name
meses = Array("", "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", _
"agosto", "septiembre", "octubre", "noviembre", "diciembre")
mes = meses(Month(Date))
'
ruta = ThisWorkbook.Path
ruta1 = ruta & "\" & Year(Date)
ruta2 = ruta1 & "\" & mes
If Dir(ruta1, vbDirectory) = "" Then
MkDir ruta1
End If
If Dir(ruta2, vbDirectory) = "" Then
MkDir ruta2
End If
'
fecha = Year(Date) & "_" & Month(Date) & "_" & Day(Date)
hora = Hour(Time) & "_" & Minute(Time) & "h"
nom2 = Left(nom2, InStrRev(nom2, ".") - 1)
'
Archivo = "Backup_" & nom2 & " " & fecha & " " & hora
ActiveWorkbook.SaveAs _
Filename:=ruta2 & "\" & Archivo, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
CreateBackup:=True
'
Set Nuevo = ThisWorkbook
Workbooks.Open nom1
Nuevo.Close
End SubY, por último, sería correcto este código a la hora de cerrar y guardar el Libro, o el anterior código se podría incluír directamente en el evento.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ''Sub Respaldo() RealizaCopia End Sub
Muchas gracias.
1 respuesta
Respuesta de Dante Amor
1