Como puedo hacer que me pregunte donde quiero Guardar el bacckup
Como puedo cambiar la ruta para guardar un archivo
Tengo una base de datos y con ayuda de un tutorial logre hacer que me guarde un BackUP. Pero quiero que la dirección donde guarda la backup sea elegida por el usuario final de la aplicación.
la dirección a tomar de esta variable es rutaBackup = "C:\Users\FliaBG\OneDrive\Documentos\ "
Mi pregunta es como la cambio para que pregunte donde quiero guardarla
1 respuesta
Estas dos preguntas, en ellas se mencionan diversas formas para hacerlo:
Macro para abrir archivo de otro pc que me permita elegir carpeta
Poder hacer una vista previa y dar una carpeta de destino a un PDF
Gracias por responder
Pero las sugerencias tiene que ver con otro tema, no con lo que estoy preguntado, mi pregunta tiene que ver con, como hacer que cuando le doy a guardar la backup me pida donde guardar siendo que la guarda en un lugar especifico y deseo que el usuario final pueda guardarla en el lugar que el estime mejor, seria más o menos, ¿la obsesión de guardar como?
Gracias por tu ayuda
Tienes que poner algo de tu parte, porque cogiendo parte del código que se cita en las respuestas lo tienes solucionado.
Por ejemplo, en el primer enlace tienes este código, que te sirve perfectamente con un mínimo ajuste:
dim miCarpeta as String miCarpeta=InputBox("Escriba el nombre de la carpeta que contiene el archivo") If StrPtr(miCarpeta) = 0 OR Nz(miCarpeta,"")="" Then Exit Sub
En tu caso tendrías que cambiar la línea que pones por éstas:
rutaBackUp=InputBox("Escriba la ruta donde guardar la copia") If StrPtr(rutaBackUp) = 0 OR Nz(rutaBackUp,"")="" Then Exit Sub
La opción con FileDialog de esa misma respuesta, sería prácticamente igual: copias la función fncSelectCarpeta(), registras la librería, y cambias tu linea de código por:
rutaBackUp = fncSelectCarpeta() If Nz(rutaBackUp ,"")="" Then Exit Sub
Como ves, sí responden a lo que preguntas....
¡Gracias!
Muchas Gracias voy a probar y luego te comento como me fue,
estoy en pañales todavía en lo que respeta a programación, pero gracias a ustedes estoy aprendiendo, gracias por su apoyo
Muchas Gracias, me funciona bien, pero me gustaría una ayuda mas, si en lugar del cuadro para escribir la dirección de la carpeta, me saliera el cuadro de guardar como, seria mejor, si esto es posible como se haría.para que el usuario final de la aplicación solo tenga de desde este cuadro dar los clic necesarios escogiendo el disco, la carpeta o la usb para guardarla backUp.
gracias nuevamente
Gracias por tu ayuda, como te comentaba soy novato en esto de programación, pero no encuentro como registrar la librería,
Para registrar la librería, abres el editor de Visual Basic, vas al menú Herramientas -> Referencias, y la marcas del listado que aparece
Gracias por tu ayuda, he buscado la librería pero no me aparece, tengo instalado access 2016, sera que esta con otro nombre, muchas gracias por tu ayuda
Bien, porque la librería (Microsoft Office xx. X Object Library) la tienes que tener (se instala con el Office), lo único que variará es el número de versión (las xx.x)
Estuve probando, ya logre activar la librería pero me da un Error,
te voy a enviar el código del modulo para que puedas ver mejor
Option Compare Database
Public Sub creaBackup()
Public Sub FncSelectCarpeta()
'-----CREADO POR NECKKITO EL 07/05/12-----
'--------Modificado: 12/08/12-----
'-----------http://siliconproject.com.ar/neckkito/-----
'----------Requiere registrar la librería "Microsoft Scripting Runtime"-----
On Error GoTo sol_err
'Declaramos las variables
Dim fsc As Scripting.Folder 'fsc=filesystem-Carpeta
Dim fsa As Scripting.File 'fsa=filesystem-Archivo
Dim fso As FileSystemObject ' fso=filesystem-Objeto
Dim rutaFullBD As String, nombreBD As String
Dim rutaBackup As String, nombreBackup As String
Dim fullBackup As String
Dim resp As Integer
Dim yaExisteBackup As Boolean
'Cogemos la información de la BD actual
rutaFullBD = Application.CurrentProject.FullName
'Cogemos el nombre de la BD
nombreBD = Application.CurrentProject.Name
'Definimos la carpeta "Backup", dentro del directorio donde está la BD
'actual, como la ruta predefinida para guardar el backup
rutaBackup = FncSelectCarpeta()
If Nz(rutaBackup, "") = "" Then Exit Sub
' rutaBackup = InputBox("Escriba la Ruta donde guardar la copia")
' If StrPtr(rutaBackup) = 0 Or Nz(rutaBacUp, " ") = " " Then Exit Sub
' "C:\Users\FliaBG\OneDrive\Documentos\"
'Application.CurrentProject.Path & "\Backup\||las latras despues del signo = es la ruta donde se guardara la backup
'Definimos el nombre del backup, que será la fecha del sistema más el nombre de la BD
'A la fecha le damos formato con separador por puntos porque la barra nos
'daría un nombre de archivo no válido. Ponemos antes el mes para conseguir una
'ordenación correcta por fecha
nombreBackup = nombreBD
'& "-" &Format(Date, "yy.mm.dd") este es el formato que tenia antes pero con tiene a fecha con guiones no se guarda bien
'Creamos el fullBackup (ruta+nombre+extension)
fullBackup = rutaBackup & nombreBackup
'Lanzamos un aviso diciendo dónde se va a crear la copia de seguridad y qué
'nombre tendrá. Solicitamos confirmación al usuario.
resp = MsgBox("Se va a realizar una copia de seguridad con la siguiente ruta y" _
& " nombre de archivo:" & vbCrLf & vbCrLf & fullBackup _
& vbCrLf & vbCrLf & vbTab & "¿Continuar?", vbQuestion + vbYesNo, "BACKUP")
'Si la respuesta es NO salimos del proceso
If resp = vbNo Then Exit Sub
'Creamos el FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'Accedemos a la carpeta de copias de seguridad. Si la carpeta no existe
'nos saltará el error 76. Lo gestionamos desde el control de errores
Set fsc = fso.GetFolder(rutaBackup)
'Establecemos la hipótesis de que ya existe una copia de la BD con el mismo nombre
yaExisteBackup = True
'Comprobamos si efectivamente ya existe una copia con el mismo nombre.
'Si el archivo no existe nos saltará el error 53. Lo gestionamos desde
'el control de errores
Set fsa = fso.GetFile(fullBackup)
'Si ya existe el backup informamos y pedimos al usuario qué desea hacer
If yaExisteBackup = True Then
resp = MsgBox("Ya existe un backup con el mismo nombre. ¿Desea sobrescribirlo?", _
vbQuestion + vbYesNo, "COPIA EXISTENTE")
'Si el usuario no desea sobrescribir salimos del proceso
If resp = vbNo Then Exit Sub
End If
'Finalmente, guardamos la copia de seguridad
fso.CopyFile rutaFullBD, fullBackup
'Lanzamos un mensaje de aviso
MsgBox "Copia de seguridad realizada correctamente", vbInformation, "CORRECTO"
Salida:
Exit Sub
sol_err:
'Gestionamos los errores 76, 53 y otros.
Select Case Err.Number
Case 76 'La carpeta no existe
'Creamos la carpeta
fso.CreateFolder (rutaBackup)
'Seguimos con la ejecución del código en el punto de interrupción
Resume Next
Case 53 'El archivo no existe
'Cambiamos el valor de yaExisteBackup
yaExisteBackup = False
'Seguimos con la ejecución del código en el punto de interrupción
Resume Next
Case Else 'Si se produce otro error
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Select
End Sub
este código lo uso de uno de los expertos de este Bloc
gracias por tu ayuda.
Que usabas ese código loo tenía bastante claro desde un principio. Sin entrar a analizarlo, y como tengo la bola de cristal en el taller para adivinar dónde te da el error, te diré que la tercera línea (Public Sub FncSelectCarpeta()) te sobra.
Quite lo que me sugeriste y me sigue dando un error
te coloco la Imagen del Error
Trate de colocarlo en varios sitios y me da error, perdona mi poco conocimiento
Gracias por su ayuda
Como te dije en un mensaje anterior, tienes que copiar, fuera del código de Neckkito que te hace el backup, la función fncSelectCarpeta, que tienes en uno o en los dos enlaces anteriores.
Si no la copias, access no sabe de qué le estás hablando cuando le dices rutabackup=fncSelectCarpeta() y te da el error
- Compartir respuesta