Exportar consultas de Access a Excel eligiendo la ruta

Estoy armando una aplicación en access con consultas especificas. Un formulario con casillas de verificación permiten elegir la consulta que quiero exportar.
El código que se me ocurrió emplear es el siguiente:

Private Sub Aceptar_Click()

mensaje = MsgBox("¿Desea bajar a su PC los archivos seleccionados? ", vbYesNo + vbQuestion, "Archivos de análisis")
If mensaje = vbYes Then
If V1 = -1 Then
DoCmd. OutputTo acOutputQuery, "Informe A", "Excel97-Excel2003Workbook(*.xls)", "", False, "",, acExportQualityPrint
Else
End If
If V2 = -1 Then
DoCmd. OutputTo acOutputQuery, "Informe B", "Excel97-Excel2003Workbook(*.xls)", "", False, "",, acExportQualityPrint
Else
End If
If V3 = -1 Then
DoCmd. OutputTo acOutputQuery, "Informe C", "Excel97-Excel2003Workbook(*.xls)", "", False, "",, acExportQualityPrint
Else
End If
Else
Mensaje4 = MsgBox("La acción fue cancelada por el usuario. ", vbInformation, "Información")
DoCmd.Close
End If

End Sub

Me funciona pero me pide que le confirme el nombre del formulario, pero esto me permite seleccionar también la ruta donde se ha de grabar.
El problema es que lo hace por cada formulario que tilde y son más de 10. Si le coloco el nombre del formulario en VB lo graba directamente en la ultima ruta y no me permite escoger otra.

Mi pregunta es: ¿Cómo debo hacer para elegir la ruta que deseo y que me la solicite solo una sola vez?. ¿Tal vez el código empleado no es el apropiado.?

1 respuesta

Respuesta
2

¿Por que no pruebas con DoCmd. TransferText?

Dim miRuta As String
Dim mensaje as string
mensaje = MsgBox("¿Desea bajar a su PC los archivos seleccionados? ", vbYesNo + vbQuestion, "Archivos de análisis")
If mensaje = vbYes Then
miRuta = InputBox("Escribe la ruta donde quieras exportar")
If StrPtr(miRuta)=0 Then Exit Sub
If V1 = -1 Then
DoCmd.TransferSpreadsheet acExport, 8, "Informe A", miRuta & "\" & "Informe A", True, ""
End If
...

Un saludo.


Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/ 

Sveinbjorn: Esa seria una opción pero debo escribir la ruta en el ImputBbox. Veras, esta aplicación la utilizan varias personas de la Cía. a la que pertenezco incluyéndome, y la idea las personas que no tienen mucha idea de como escribir una ruta, se puedan desplazar por las carpetas de la red y con un click elegir la carpeta que corresponda (que es siempre diferente). ¿Se podrá lograr eso? Como siempre agradezco tu ayuda.

Saludos. Jorge

Si se puede, sustituye las líneas del Inputbox:

miRuta = InputBox("Escribe la ruta donde quieras exportar")
If StrPtr(miRuta)=0 Then Exit Sub

por éstas:

miRuta = fncSelectCarpeta()
If miRuta="" Then Exit Sub

Y en un módulo nuevo, pega esta función:

'--------------------------------------------------------------------------------------------
'Función para seleccionar una carpeta
'--------------------------------------------------------------------------------------------
Public Function fncSelectCarpeta() As String
'Creamos un control de errores
On Error GoTo sol_err
'Declaramos las variables
Dim fd As Object 'fd = FileDialog
Dim rutaIni As String
'Definimos la ruta inicial
rutaIni = Application.CurrentProject.Path
'Creamos el objeto FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
'Configuramos las características de nuestra ventana de diálogo
With fd
.Title = "Selecciona la carpeta"
.ButtonName = "Aceptar"
.InitialView = msoFileDialogViewList
.InitialFileName = rutaIni
'Detectamos el botón pulsado por el usuario
If .Show = -1 Then
'Asignamos a la función la carpeta seleccionada, convirtiéndola
'a un valor de tipo String
fncSelectCarpeta = CStr(.SelectedItems.Item(1))
Else
'Si se pulsa cancelar avisamos y salimos
MsgBox "Selección cancelada", vbExclamation, "CANCELADO"
Exit Function
End If
End With
Salida:
Exit Function
sol_err:
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Function

Para que te funcione, tienes que registrar esta librería:

Microsoft Office xx.x Object Library

Un saludo.


Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/ 

Buenísimo Sveinbjorn!

No me queda claro lo de registrar la librería. ¿De qué se trata? ¿Cómo debo hacerlo?

Saludos.

En el editor de VBA, en la barra de herramientas, vas a "Herramientas"-> "Referencias" y allí la buscas y la marcas. Sales aceptando y ya está registrada. Los números variarán en función de la versión de access que tengas.

Ok. Ahora funciona!!

Cree una carpeta en mi escritorio con la intención de probar. Ejecuto el código y elijo esa carpeta pero el archivo se guarda en el escritorio. Intente con otras rutas pero siempre guarda el archivo en la ante ultima carpeta. Habré metido la pata?

Saludos

¿Tienes puesta la contrabarra entre la ruta y el nombre del archivo?

miRuta & "\" & "Informe A"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas