Access - exportar consulta con VBA

 
Vista:

exportar consulta con VBA

Publicado por JCLmythos (1 intervención) el 15/11/2006 16:31:13
A ver si me podeis ayudar. Intentare explicarme bien para que me entendais lo mejor posible.

Tengo una BD con varias consultas. En alguna de ellas filtro por una fecha que introduzco a la hora de ejecutar la consulta.

Lo que me gustaria hacer es exportar estas consultas, pero que el nombre del archivo resultante sea la fecha que he introducido. Todo esto con VBA.

He buscado muchas cosas y no me sirve nada. Me podeis ayudar? O es imposible?

O es mejor primero asignar ese nombre y luego ejecutar la consulta? Como se haria?

Un saludo y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Exportar consulta con nombre de archivo basado en fecha

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 17:00:03
Sí, es posible realizar la exportación de consultas en Access utilizando VBA y asignar el nombre del archivo resultante a partir de la fecha introducida. A continuación, te proporciono un ejemplo de cómo hacerlo:

Supongamos que tienes una consulta llamada "ConsultaEjemplo" que contiene un filtro basado en una fecha introducida por el usuario. Deseas exportar los resultados de esta consulta a un archivo CSV con el nombre en formato "yyyy-MM-dd.csv" donde "yyyy" es el año, "MM" es el mes y "dd" es el día de la fecha introducida.

Puedes utilizar el siguiente código VBA para lograrlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Public Sub ExportarConsultaPorFecha()
    Dim db As DAO.Database
    Dim consulta As DAO.QueryDef
    Dim fechaIntroducida As Date
    Dim nombreArchivo As String
 
    On Error GoTo ErrorHandler
 
    Set db = CurrentDb()
 
    ' Pregunta al usuario por la fecha y la almacena en la variable "fechaIntroducida"
    fechaIntroducida = InputBox("Introduce la fecha (Formato: dd/mm/yyyy)", "Introducir Fecha")
 
    ' Formatea la fecha como "yyyy-MM-dd" para ser usada como nombre del archivo
    nombreArchivo = Format(fechaIntroducida, "yyyy-MM-dd") & ".csv"
 
    ' Crea una nueva consulta basada en "ConsultaEjemplo" y asigna el filtro por fecha introducida
    Set consulta = db.CreateQueryDef("", "SELECT * FROM ConsultaEjemplo WHERE Fecha = #" & Format(fechaIntroducida, "yyyy-mm-dd") & "#")
 
    ' Exporta los resultados de la consulta a un archivo CSV con el nombre generado
    DoCmd.TransferText acExportDelim, , consulta.Name, nombreArchivo, True
 
    MsgBox "Consulta exportada exitosamente a: " & nombreArchivo, vbInformation
 
    ' Elimina la consulta temporal creada
    db.QueryDefs.Delete consulta.Name
 
    Set consulta = Nothing
    Set db = Nothing
    Exit Sub
 
ErrorHandler:
    MsgBox "Error al exportar la consulta: " & Err.Description, vbExclamation
    Set consulta = Nothing
    Set db = Nothing
End Sub

El código anterior crea una consulta temporal basada en "ConsultaEjemplo" con el filtro por la fecha introducida. Luego, exporta los resultados de esta consulta a un archivo CSV con el nombre generado. Finalmente, se elimina la consulta temporal.

Recuerda que debes ajustar el nombre de la consulta "ConsultaEjemplo" y el campo "Fecha" en el código según tu base de datos.

Espero que esta solución te sea útil para exportar consultas en Access con el nombre del archivo basado en la fecha introducida por el usuario. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar