Macro para hacer copia de seguridad

Otra vez jc.
Te quería preguntar si hay manera de hacer una macro para que cada vez que se guarde el archivo excel haga una copia de seguridad del mismo en otra carpeta. Es un archivo que usan varios usuarios y sería para asegurar en caso de que alguien elimine datos por error.
Respuesta
1
El código es un poco extenso. Te sugiero que hagas la siguiente macro:
Sub SalvarArchivo()
ChDir "C:\Respaldos" 'Para cambiar de directorio. Pones el que tienes para respaldos
ThisWorkbook. Sabe 'Para salvar el Libro
ChDir "C:\Documents and Settings\Usuario" 'Pones la dirección de tu carpeta de trabajo
End Sub
Insertas un botón o una AutoForma y le asignas la macro y listo.
Hola jc, gracias por la respuesta.
Mira, no sé si lo estaré haciendo mal, supongo que sí.
Metí un botón y le puse el código que me envías y me da el error:Error de compilación, se esperaba End Sub, señalando lo que pongo en negrita.
Private Sub CommandButton1_Click()
Sub SalvarArchivo()
ChDir "C:\Documents and Settings\gaso\Escritorio\MADRE\SELECCION\GENERAL\RESPALDOS" 'Para cambiar de directorio. Pones el que tienes para respaldos
ThisWorkbook.Save 'Para salvar el Libro
ChDir "C:\Documents and Settings\gaso\Escritorio\MADRE\SELECCION" 'Pones la dirección de tu carpeta de trabajo
End Sub
End Sub
Me puedes decir que tengo mal... probé a meterle más End Sub... pero como que no...
Muchas gracias otra vez
gustavo, elranuza
elimina un End Sub. La estructura es de la siguiente forma:
Sub SalvarArchivo()
    Código
End Sub
[size= small; font-family: Times New Roman]jc, perdona que te siga molestando. Pero ya lo probé también así y sigue sin funcionar. Me sigue marcando la misma línea y dándome el mismo error...[/size]
[size= small; font-family: Times New Roman]gracias por tu paciencia.[/size]
[size= small; font-family: Times New Roman]elranuza[/size]
Perdona otra vez... lo probé también como dices y sigue dando el mismo error donde te marco... y no entiendo, porque el End Sub lo tiene...
Lo puse también el el Workbook así, pero nada:
Private Sub Workbook_Open()
Sub SalvarArchivo()
ChDir "C:\Documents and Settings\Administrador\Escritorio\MADRE\SELECCION\RESPALDOS" 'Para cambiar de directorio. Pones el que tienes para respaldos
ThisWorkbook.Save 'Para salvar el Libro
ChDir "C:\Documents and Settings\Administrador\Escritorio\MADRE\SELECCION" 'Pones la dirección de tu carpeta de trabajo
End Sub
Gracias por tu paciencia.
Un saludo
gustavo , el ranuza
Veo que estoy contestando a ciegas. Por favor envíame tu archivo y con gusto te ayudo.
JC, de verdad gracias.
Ahí te lo envié.
Saludos,
elranuza, gustavo
Hola JC, agradecerte que el envío del archivo.
Lo probé el archivo y me da un error de compilación tanto en el archivo que me envías, como adaptándolo al que yo tengo, diciendo: "Se ha detectado un nombre ambiguo Workbook_BeforeClose" y me marca lo que te pongo en negrita...
Si pudieras mirarlo... pero vamos, que cuando tengas tiempo... gracias una vez más. Y saludos.
Tu código:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim MiArchivo As String
MiArchivo = Range("BX1")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\gaso\Escritorio\MADRE\SELECCION\GENERAL\RESPALDOS" & MiArchivo, _
FileFormat:=xlWorkbookDefault, CreateBackup:=False
Application.DisplayAlerts = True
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim MiArchivo As String
MiArchivo = Range("BX1")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\gaso\Escritorio\MADRE\SELECCION\GENERAL\RESPALDOS" & MiArchivo, _
FileFormat:=xlWorkbookDefault, CreateBackup:=False
Application.DisplayAlerts = True
End Sub
No sé que tipo de modificación le estas haciendo al archivo, yo lo probé varias veces y no me da ningún error. Al que te envié no tienes que hacerle ninguna, PERO NINGUNA MODIFICACIÓN para que no te de error.
En el error anterior que tenías era porque ponías la macro que te mandé en el WorkBook_Open y por eso salía que faltaba un End Sub, pero tú nunca me dijiste dónde estabas colocando el código. Ahí lo que tenías que poner era Call SalvarArchivo y eso era todo.
Al que te envié no se si estás colocando el código en otro lado, si es así solo copia desde el Dim MiArchivo As String hasta Application.DisplayAlerts = True
jajaja. Perdona, se ve que lo que pasa por mis manos se estropea!
Yo lo que he hecho es copiar el archivo que me has enviado y ponerlo en la carpeta directamente, sin tocar nada. Lo abro, le añado un nombre por ejemplo y lo cierro, y al cerrar me da el error. De verdad que no toqué nada.
Lo que hice luego fue pasar todo tal cual al archivo que tenía yo con el código antiguo, cambiarlo y me daba el mismo error...
Gracias, que más no te puedo pedir. Seguiré probando en casa y ya te cuento por el correo.
Un saludo
gustavo, elranuza

1 respuesta más de otro experto

Respuesta

El problema que tiene elnaruza es muy facil de resolver:

Él está copiando el código y asignandolo en un botón tal cual lo escribieron aqui y eso está mal

El código que le dio Juan Carlos es el de la macro

Entonces la orden del botón es llamar a la macro y debe quedar asi:

Private Sub CommandButton1_Click()

SalvarArchivo

end sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas