Macro para guardar copia de libro de excel

Tengo una macro que me guarda una copia de un libro de excel en la ruta que yo le indique, sin embargo hay veces que si la guarda donde le indico y con el nombre predefinido y la mayoría de veces las guarda en otro lado y con otro nombre.

Comparto el código para ver si me pueden ayudar

Sub COPIADESEGURIDAD() 'definimos las variables que emplearemos

Dim ruta As String
Dim Titulo As String
Titulo = "Selecciona la ruta de tu carpeta"
On Error Resume Next 'evitaría un error en caso de no seleccionar nada o pulsar ESC

With CreateObject("shell.application")
ruta = .browseforfolder(0, Titulo, 0, 0).items.Item.Path
nombre = "COPIA SEG (" & Format(Now, " dd-mm-yy") & ")" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ruta & nombre

End With: On Error GoTo 0 'la siguiente instruccíon IF ejecuta una acción a modo de ejemplo

If ruta = "" Then

MsgBox "No has marcado ningún directorio.", , "Operación no válida"

Else
MsgBox "Ha seleccionado la siguiente ruta COPIA DE SEGURIDAD " & ruta

End If
End Sub

1 respuesta

Respuesta
1

[Hola

Es un error usar On Error Resume Next a menos que sea absolutamente necesario, más aún si se mantiene a pesar de que uno nota que hay errores como los que mencionas. Borra dicha línea (y el otro Goto), haz lo que siempre haces y comenta si te surge algún mensaje de erro y cuál, exactamente, es.

Hola, ya quite la línea y el comando que me indicaste, y si le pongo cancelar o le doy escape me manda menaje de compilador, le pongo finalizar y se sigue a la siguiente rutina para poder elegir la ruta donde quiero que se guarde el documento, le ´pongo aceptar y me muestra la ruta seleccione, pero no la guarda ahí¡.

La guarda siempre en otra dirección.

Además de que renombrar el archivo de otra manera a la que se esta indicado en el código

DocumentsCOPIA SEG ( 16-10-19)GALERÍA PUES - copia

¿Me puedes ayudar?

[Hola nuevamente

No habías comentado que ese supuesto error ocurría al usar ESC o el botón Cancelar. Te comento que eso es precisamente lo que le estás diciendo que haga al cancelar y depurar/Finalizar pues te avisa que algo debes cambiar y tú intentas continuar. En esos casos lo que se debe hacer es controlar lo que hace la macro al usar "Cancelar" o similar:

Sub COPIADESEGURIDAD()
Dim ruta As Object
Dim objShell As Object
Dim Titulo$, Nombre$
Titulo = "Selecciona la ruta de tu carpeta"
Set objShell = CreateObject("shell.application")
Set ruta = objShell.browseforfolder(0, Titulo, 0, 0) '.items.Item.Path
If ruta Is Nothing Then
    MsgBox "Cancelaste o no seleccionaste una carpeta"
    Exit Sub
Else
    Nombre = "COPIA SEG (" & Format(Now, " dd-mm-yy") & ")" & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs ruta.Items.Item.Path & Nombre
    MsgBox "Ha seleccionado la siguiente ruta COPIA DE SEGURIDAD " & ruta
End If
End Sub

Hola Buen día

La instrucción que me compartes funciona igual que la original, sin embargo ambas no guardan el archivo en la ubicación seleccionada, no logro visualizar cual es el conflicto que produce esta falla¡

Y sigue cambando el nombre del archivo: DocumentsCOPIA SEG ( 17-10-19)Libro1, el correcto debería de ser así: COPIA SEG ( 17-10-19)Libro1

¿Puedes seguir ayudándome?

Perdón, por un lapsus y el apuro no cambié una parte. Ahora sí:

Sub COPIADESEGURIDAD()
Dim ruta As Object
Dim objShell As Object
Dim Titulo$, Nombre$
Titulo = "Selecciona la ruta de tu carpeta"
Set objShell = CreateObject("shell.application")
Set ruta = objShell.browseforfolder(0, Titulo, 0, 0) '.items.Item.Path
If ruta Is Nothing Then
    MsgBox "Cancelaste o no seleccionaste una carpeta"
    Exit Sub
Else
    Nombre = "COPIA SEG (" & Format(Now, " dd-mm-yy") & ")" & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs ruta.self.Path & "/" & Nombre
    MsgBox "Ha seleccionado la siguiente ruta COPIA DE SEGURIDAD " & ruta.self.Path
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas