Crear botón en Access para exportar a Excel a un ruta especifica

Necesito, crear un botón para exportar una consulta de Access a Excel a un ruta especifica y que el nombre del archivo tome dos campos de la consulta + la fecha y hora.

Actualmente tengo una macro que lo hace pero tengo que estar cambiando la ruta y poniendo el nombre al archivo.

Private Sub Comando11_Click()
Dim RutaExport As String, LlbreExport As String, Fitxer As String, Consulta As String
    RutaExport = "C:\Ordenes"        ' Ruta de donde quieres poner el excel
    LlibreExport = "Pedido.xls"
    Fitxero = RutaExport & LlibreExport
    Consulta = "ExportarExcel"          ' Lo que quieres exportar
     If Application.Version = "12.0" Then
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, Consulta, Fitxero
    Else
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Consulta, Fitxero
    End If
End Sub

Me pasaron esta consulta pero siempre me guarda con el mismo nombre el archivo.

Respuesta
2

Según yo lo veo hay dos cuestiones:

1.- Declaras el Fichero como Fitxer y lo usas como >> Fitxero

Supongo que no tienes la declaración Option Explicit, ya que si fuera así te daría error.

2.- Te dá siempre el mismo nombre de fichero porque tu se lo estás imponiendo, ya que le dices >>

LlibreExport = "Pedido.xls"

A partir de aquí el Nombre del Fichero debería ser algo así como:

A.- Selecciona los campos de la Consulta que quieras que salgan. No te comento que has de hacer porque ignoro si han de cumplir una condición o no o...

Supongamos que ya los has seleccionado y son Campo1 y Campo2

Y además la Fecha y Hora son las del momento.

LlibreExport = "Pedido" & Campo1 & Campo2 & Format(Now(), "yyyymmddhhnnss") & ".xls"

Y la rutaExport a mi modo de ver debería ser:

RutaExport = "C:\Ordenes\"

Un saludo >> Jacinto

Jacinto,

Gracias por la ayuda, te comento que cundo modifique lo que me pedís y  no me toma los campos de la consulta que quiero guardar.

De seguro tengo algo mal.

me graba así Falso.XLS

Gracias por tu ayuda

Private Sub Comando11_Click()
Dim RutaExport As String, LlbreExport As String, Fitxer As String, Consulta As String
    RutaExport = "C:\Ordenes"        ' Ruta de donde quieres poner el excel
    LlibreExport = "Pedido.xls"
    LlibreExport = LlibreExport = "Pedido" & CodCliente & NomCliente & Format(Now(), "yyyymmddhhnnss") & ".xls"
    Consulta = "ExportarExcel"          ' Lo que quieres exportar
     If Application.Version = "12.0" Then
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, Consulta, Fitxero
    Else
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Consulta, Fitxero
    End If
End Sub

Veamos unas cuantas cosas.

Te comentaba que no te decía la forma de buscar los valores de Campo1 y Campo2, porque ignoro tu estructura de datos y no basta con poner el Nombre de esos campos, sino que tienes que sacarlos de la Fuente de Datos que por lo que veo es una Consulta.
La variable LlibreExport la tienes declarada con una "letra" menos >> (LlbreExport)
Luego te sobra >> LlibreExport = "Pedido.xls"
Y además en la línea siguiente te sobra la primera parte >> LlibreExport =
En definitiva si ciertamente la consulta se llama >> ExportarExcel pondríamos algo como ésto.

Private Sub Comando11_Click()
Dim RutaExport As String, LlibreExport As String, Fitxer As String, Consulta As String, StrSQL As String, CampoCod As String, CampoNomb As String
Dim Rst As DAO.Recordset
StrSQL = "SELECT * FROM ExportarExcel;"
Set Rst = CurrentDB.OpenRecordset(StrSQL, dbOpenSnapshot)
If Not Rst.EOF And Not Rst.BOF Then
    Rst.MoveLast
    Rst.MoveFirst
    CampoCod = Rst!CodCliente
    CampoNomb = Rst!NomCliente
Else
    MsgBox "La consulta que intentas exportar no devuelve Registros",vbCritical, "FALTAN DATOS"
End If
RutaExport = "C:\Ordenes\"        ' Ruta de donde quieres poner el excel    
LlibreExport = "Pedido" & CampoCod & CampoNomb & Format(Now(), "yyyymmddhhnnss") & ".xls"
Fitxer = RutaExport & LlibreExport
Consulta = "ExportarExcel"          ' Lo que quieres exportar
If Application.Version = "12.0" Then
   DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, Consulta, Fitxer
Else
   DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Consulta, Fitxer
End If
Rst.Close
Set Rst = Nothing
End Sub

Un saludo >> Jacinto

Jacinto sabes que ni bien ejecute la consulta me da el siguiente error, 

"Error de complicación:

No se ha definido el tipo definido por el usuario.

Me marca del código  "DAO.Recordset"

Que puede ser?

Ve al editor de VBA >> Menú >> Herramientas >> Referencias

Busca y marca >>Microsoft Office xx.0 Access Database Engine Object Library 

El xx es tu versión de Acces, que puede ser 12 o 14 o 16

Un saludo >> Jacinto

Muchas gracias!!!

Genial

Estupendo que hayas resuelto el problema. Y si valoras la respuesta cerramos el tema.

Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas