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 se elegida por el usuario final de la aplicación.

la dirección a toma de esta variable  rutaBackup = "C:\Users\FliaBG\OneDrive\Documentos\ "

Mi pregunta es como la cambio para que pregunte donde quiero guardarla

2 Respuestas

Respuesta
1

. 18.05.17 #VBA solicitar destino archivo a guardar.

Buenas, Benjamin

Aquí tienes una rutina de VBA que permitirá que se navegue por le disco para indicar dónde guardar el back up:

Accede al Editor de VBA (Atajo: Alt + F11), allí inserta un módulo (Insertar-Módulo) y pega el siguiente código:

Sub guardaback()
rutaBackup = "C:\Users\FliaBG\OneDrive\Documentos\"
'  
rutaBackup = Trim(rutaBackup) & IIf(Right(Trim(rutaBackup), 1) = "\", "", "\")
NomArch = ActiveWorkbook.Name
rutaBackup = Application.GetSaveAsFilename(InitialFileName:=rutaBackup, FileFilter:= _
    "Excel Files (*.xlsx)," & "*.xlsx, Macro Enabled" & _
    "Workbook (*.xlsm), *xlsm", Title:=">>>>>>> Guarde backup <<<<<<<")
If rutaBackup <> False Then
    ThisWorkbook.SaveAs Filename:=rutaBackup
    MsgBox "GUARDADO como " & rutaBackup
    Else
    MsgBox "Este archivo NO fue guardado"
End If
End Sub

.

Gracias por tu repuesta

lo hice,   pero no  me pide donde debo guardarlo

.

Buenos dpías, Benjamin

Así como está configurada la rutina, te habilita una ventana para que elijas la carpeta dónde guardarla, dando como primera opción la dirección que habías mencionado.

Te aparece una ventana como esta aquella de "Guardar como...", y esta es la forma de pedirte donde guardarlo.:

Altenativamente podría hacerse una rutina con un cuadro de diálogo donde ESCRIBAS la dirección donde guardarlo, pero eso es más incomodo para el usuario que la opción que te dí. Aparte pueden producirse errores de tipeo que no guarden el archivo o lo haga en lugares incorrectos.

Sería algo como esto:

Sub guardaback()
rutaBackUp = "C:\Users\FliaBG\OneDrive\Documentos\"
'
rutaBackUp = Trim(rutaBackUp) & IIf(Right(Trim(rutaBackUp), 1) = "\", "", "\")
NomArch = ActiveWorkbook.Name
rutaBackUp = InputBox("Ingrese direccion archivo de backup", "GUARDAR BACK-UP", rutaBackUp)
If Len(rutaBackUp) > 1 Then
    ThisWorkbook.SaveAs Filename:=rutaBackUp
    MsgBox "GUARDADO como " & rutaBackUp
    Else
    MsgBox "Este archivo NO fue guardado"
End If
End Sub

Recomiendo usar la primera opción, pero depende de tus necesidades.

Pruebalo y dime.

Abrazo

Fer

Se me olvido mencionar que estoy trabajando en una base de datos de access, o que me enviaste me parece que es para exccel no me ha funcionado. Si puedes ayudarme un poco más te lo agradezco.

Muchas gracias por tu pronta respuesta

.

.

Buenas, Benjamín

Claro, planteaste tu consulta en el lugar equivocado:

Tengo un manejo básico de MS Access y no programo en VBA en ese entorno.

Seguramente encontrarás respuesta, cursando la misma pregunta aquí:

http://www.todoexpertos.com/temas/microsoft-access 

Éxitos con eso, lamento no poder ayudar más que esto.

Saludos

Fer

.

Respuesta
1

Pon lo siguiente en tu macro

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Selecciona una carpeta"
        .AllowMultiSelect = False
        .InitialFileName = ThisWorkbook.Path & "\"
        If .Show <> -1 Then Exit Sub
        rutaBackup = .SelectedItems(1) & "\"
    End With

De igual forma en la variable rutaBackup quedará la ruta elegida por el usuario

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Gracias por tu pronta respuesta 

soy un poco novato, mi pregunta ahora es donde coloco el código que me envías, lo sustituyo por la linea  rutaBackup = "C:\Users\FliaBG\OneDrive\Documentos\ " o donde lo pongo

gracias 

Así es, cambia tu línea por el código que te envié.

Si no tienes más dudas, apreciaría que cambiaras la valoración a la respuesta.

la aplicación que estoy haciendo es en access, hice lo que me indicas y  me sale un error, agradecería si me puedes dar una mano de ayuda .

gracias 

Lo que te puse es código para VBA de Excel, ya que tu pregunta la pusiste en Microsft Excel.

No tengo access, por lo tanto, no puedo probar.

Intenta poner una nueva pregunta en el tema de Access o envía la pregunta a Sveinbjorn El Rojo o a Jacinto Trillo Jareño

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas