Error en código para exportar a Excel

Estoy adaptando un código para exportar de access a excel, pero me da un error, dice "pocos parámetros, se esperaba dos, y no logro dar con la solución.

La linea que me resalta es  Set rstOper = CurrentDb.OpenRecordset(sqlOper), adjunto el código.

Sub cargadao()

Dim database As DAO.database
Dim rstOper As DAO.Recordset
Dim rutaExcel As String, nomExcel As String
Dim sqlOper As String, sqlExcel As String
Dim miQuery As QueryDef
Dim vOper As String
Dim msucursal As String
Dim mfecha As Variant

'Inicializamos la variable rutaExcel
rutaExcel = "C:\rutaCarpetas\"

'Creamos la consulta de sucursales

sqlOper = "SELECT [FechaSucucrsal],[Sucursal]" _
& "FROM [tblsucursal]" _
& "GROUP BY [FechaSucucrsal],[Sucursal]"

'Creamos el recordset para las operadoras
Set rstOper = CurrentDb.OpenRecordset(sqlOper)
'Nos movemos al primer registro
rstOper.MoveFirst

'Iniciamos el proceso
Do Until rstOper.EOF
msucursal = rstOper!sucursal
mfecha = rst!FechaSucucrsal
'Cogemos el nombre de la sucursal y la fecha y aprovechamos para crear el nombre del Excel
'vOper = rstOper.(0).Value
vOper = "IMP_CAJA_" & msucursal & mfecha
nomExcel = rutaExcel & vOper & ".xls"
'Creamos la consulta con los datos de un excel

sqlExcel = "SELECT ID, TipoCpmp, fecha, Glosa, Cuenta, Caja, MontoDebe, MontoHaber, CampoH, CampoI, TipoDoc, Documento, Vencimiento," _
& "FechaCaja, Rut, Nombre, sucursal, TipoPago " _
& "FROM ComprobanteCaja" _
& "WHERE (((sucursal) =" & msucursal & " ) And (" & mfecha & " = ))" _
& "ORDER BY [TipoPago]"

'Creamos la consulta y realizamos la exportación de los datos
Set miQuery = CurrentDb.CreateQueryDef("CTemp", sqlExcel)
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, "CTemp", nomExcel, False

'Borramos la consulta temporal
CurrentDb.QueryDefs.Delete "CTemp"
'Nos movemos a la siguiente operadora
rstOper.MoveNext
Loop
'Lanzamos el mensaje de que todo ha ido bien
MsgBox "Exportación finalizada correctamente", vbInformation, "OK"
'Cerramos conexiones y liberamos memoria
rstOper.Close
Set rstOper = Nothing

End Sub

1 Respuesta

Respuesta
1

El error en esa línea que mencionas probablemente se deba a alguna de las dos siguientes cosas:

- O están mal los nombres de las tablas en tu sentencia SQL (sqlOper)

- O las tablas no están en el archivo en dónde está la rutina que has enviado

Abraham Valencia

¡Gracias! Estimado, lo voy a probar y le comento

Hola estimado, toda la razón, había cambiado el nombre de una tabla  por una que no existía, me queda una sola duda y es que yo no deseo que  no se exporten los nombres de campo, eso lo logro con  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7....?   Saludos.

En tu línea:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, "CTemp", nomExcel, False

Si colocas "false" no considera la primea fila como nombres de campos, si colocas "True" sí serán tomados como tales.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas