Consultas de Access a Excel

Quisiera saber si de pronto tu conoces que exista alguna posibilidad dentro de Access, a través de macros, VBA o lo que sea; que a través de un botón de comando yo ejecute una consulta y envíe los resultados automáticamente a una Hoja de cálculo de Excel.

3 Respuestas

Respuesta
2
Para ejecutar una consulta creada en Access y pegar el resultado en Excel mediante VBA, en el editor de VB tenés que establecer dos referencias (¿Herramientas? Referencias)
- Una a Microsoft ActiveX Data Objects 2.1 Library ( o superior a 2.1)
- otra a Microsoft Excel 9.0 Object Library
Una vez que estableciste las referenccias escribís el siguiente código dentro de un evento.
Dim rs As New ADODB.Recordset
Dim xl As Excel.Application, wk As Excel.Workbook
Dim archivo As String
'Abrimos la consulta armada en Access de nombre ?Consulta?
Set rs = New ADODB.Recordset
rs.Open "Consulta", CurrentProject.Connection, adOpenKeyset, adLockBatchOptimistic
'Creamos un enlace con Excel
Set xl = New Excel.Application
'Indicamos la ruta y el nombre del archivo de Excel que vamos a abrir o a crear
archivo = "C:\Mis Documentos\Varios\libro1.xls"
'Creamos un nuevo libro
Set WK = XL.Workbooks.Add
WK.SaveAs Archivo
'O abrir uno ya existente
Set wk = xl.Workbooks.Open(archivo, 0, False, , , , False)
'Dentro del "libro" excel podemos crear una hoja nueva
Set WS = WK.Worksheets.Add(, WK.Worksheets(WK.Worksheets.Count))
'O abrir una ya existente
Set WS = WK.Worksheets(Nombre)
'Para introducir datos en las celdas recorremos el recordset
Dim fila As Integer
Dim col As Integer
col = 1
While Not rs.EOF
For fila = 0 To rs.Fields.Count - 1
ws.cells(col, fila + 1) = rs.Fields(fila)
Next fila
rs.MoveNext
col = col + 1
Wend
'Y cerramos todo
Set ws = Nothing
wk.Save
wk.Close
Set wk = Nothing
xl.Quit
Set xl = Nothing
Suerte! Y hasta la
Hola..
Lamento la demora.
Hice lo que dijiste, sin embargo cuando voy a ejecutar el código me lanza un error que dice que la consulta debe incluir la sentencias "INSERT INTO", "UPDATE" y otras que no recuerdo. Mi pregunta es: ¿Será necesario que la consulta sea una consulta de acción, o de parámetros o algo así?
La cuestión es que en Access la consulta funciona perfecto (es una consulta sencilla), pero no sé que sucede cuando ejecuto el código que me pasaste.
La consulta que pasás no tiene por qué ser una consulta de acción.
Necesitaría ver el código sql de tu consulta en Access. (En Access, vista sql, tomá el texto y pégalo para que lo pueda leer) o bien enviame el código de tu rutina por mail y trato de ver por qué te manda este error.
Mi email es [email protected]
Ahh! Avisame por esta página si enviaste el mail y te respondo.
Hasta prontito
Blabre
Hola...
Que pena contigo. El error fue mio. Estuve verificando y lo que sucedió fue un simple error de sintaxis. Lamento haberte importunado. De todas formas el código que me diste me fue muy útil. Gracias.
Creo que te voy a molestar con otra pregunta, pero será en otro tablón para poder calificarte por la nueva respuesta. Gracias!
Respuesta
1
Deberás hacer una rutina de VB en la cual abras un archivo de excel y una base de Access, que debe llevar la rutina no estoy muy seguro por lo que no me atrevo a agregarte nada...
Cualquier cosa consúltame..
Eduardo
Respuesta
1
Si lo haces con macros, tienes la acción TransferirHojaCalculo, si lo haces con módulos, la instrucción DoCmd. TransferSpreadsheet.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas