Copia de seguridad en la ruta señalada en una celda

La cuestión que les planteo es hacer una copia de seguridad que se guarde con el mismo nombre del libro y la fecha del sistema, en el directorio que está indicado en la celda B5 de la hoja1

¿Me pueden ayudar?

2 Respuestas

Respuesta
1

Te anexo la macro para guardar un respaldo de tu archivo.

Revisa si existe la directorio, si no existe el directorio te envía un mensaje.

También revisa que la ruta que escribiste tenga al final la diagonal "\" si no la tiene, la macro se la pone.

Por último, pone la fecha con formato dd-mm-yyyy (dia - mes - año), es decir, guarda la fecha con guión "-". Si intentas guardar el archivo con dd/mm/yyyy, la diagonal "/" no es un carácter válido para un nombre de archivo y te envía error.

Sub CopiaRespaldo()
'Por.Dante Amor
    ruta = Sheets("Hoja1").[B5]
    If Left(ruta, 1) <> "\" Then ruta = ruta & "\"
    If Dir(ruta, vbDirectory) = "" Then
        MsgBox "La ruta de la celda no existe", vbExclamation
        Exit Sub
    End If
    nombre = Replace(ThisWorkbook.Name, ".xlsm", "")
    ActiveWorkbook.SaveCopyAs ruta & nombre & " " & Format(Date, "dd-mm-yyyy") & ".xlsm"
    MsgBox "Copia de seguridad guardada con éxito", vbInformation
End Sub

Saludos.Dante Amor

Respuesta
1

Prueba con algo parecido a lo siguiente

Sub copiaSeg()
On Error Resume Next
ThisWorkbook.SaveAs Sheets("Hoja1").Range("B5") & "\" & ThisWorkbook.Name & Date
End Sub

Ten en cuenta que si el directorio no existe simplemente ignorará el código (resume next) y que luego de ejecutada la macro, ya no estará con el nombre original, sino que estará con el nuevo nombre...lo que te pasé son las instrucciones "básicas" para hacer lo que quieres, pero habría que darle un poco más de forma 

Gracias por tu respuesta. Ya tengo creado el directorio D:\Copias\Datos

El archivo de trabajo está en C:

Si en la celda B5 del archivo de trabajo coloco esa ruta, no consigo que me guarde la copia.

Estaré haciendo algo mal?

¿Ejecutaste el código? Mirá que es un código que debe ser ejecutado y no manejado por eventos.

Si querés asegurarte si estás haciendo las cosas bien, modificá tu código como sigue

Sub copiaSeg()
On Error Resume Next
ThisWorkbook.SaveAs Sheets("Hoja1").Range("B5") & "\" & ThisWorkbook.Name & Date
Debug.Print Err.Description
End Sub

La instrucción que agregué mandará a la ventana de inmediato (dentro de VBA) lo que tenga el valor de Err (si está en blanco es porque no hay error).

Si no estás viendo esa pantalla, dentro de VBA presiona las teclas <CTRL><G>

No me lanza ningún mensaje de error, sin embargo tampoco me hace la copia

Entonces NO estás ejecutando el procedimiento.

Una vez que hayas puesto el código en tu archivo, debes ejecutarlo (macros > Ejecutar)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas