Access - Exportar consulta a excel

   
Vista:

Exportar consulta a excel

Publicado por Percy (37 intervenciones) el 18/04/2012 16:44:52
Hola a todos,
Por favor, necesito de su ayuda.

Lo que estoy tratando de hacer es lo siguiente:

Quiero descargar los registros de una consulta de acces 2007 a una hoja especifica que se encuentra en una archivo excel.

Yo recuerdo que en el acces 2003 esto era permitido con la accion transferirhojadecalculo, pero en el acces 2007 no se como hacerlo.

el archivo excel tiene dos hojas (reporte y data), y lo que necesito hacer es que la consulta de acces se descarque en la hoja de data, posteriormente lo que hare es actualizar las tablas que se encuentran en la hoja reporte.

Por favor amigos, de antemano 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 Neckkito

Exportar consulta a excel

Publicado por Neckkito (1104 intervenciones) el 24/04/2012 19:03:44
Hola!

La opción "TransferSpreadsheet", hasta donde yo sé, sólo te permite exportar tablas, no consultas.

¿Qué haría yo, en tu caso?

Pues haría lo siguiente:

1.- En tu Excel, borra la hoja Data.

1.- Me crearía una consulta auxiliar sobre tu consulta (como si "duplicaras" esa consulta). La conviertes en una consulta de creación de tabla y le dices que quieres una nueva tabla que se llamará "Data" (coincidente con el nombre de tu hoja de Excel).

Te comento lo de hacer esta segunda consulta porque no sé si la "original" la utilizas para algo más.

2.- En cualquier formulario te creas un botón de comando. Sacas las propiedades de ese botón y te vas a la pestaña Eventos -> Al hacer click, y le generas el siguiente código, teniendo en cuenta que:

- ExportarExcel.xlsx -> tú debes poner el nombre de tu Excel
- CCreaData -> Es el nombre de esta segunda consulta de creación de tabla que te comentaba

...
Private Sub ..._Click()
'Declaramos las variables
Dim miExcel As String

'Cogemos la ruta del Excel, nombre de archivo y extensión (si está en el mismo directorio
'donde está la BD
miExcel = Application.CurrentProject.Path & "\ExportarExcel.xlsx"
'Si no, aquí tú deberías poner tu ruta al Excel, si no está en el directorio
'donde tienes la BD (Por ejemplo: miExcel = "c:\MisDatos\ExportarExcel.xlsx"

'Ejectuamos la consulta de creación de tabla
DoCmd.SetWarnings False
DoCmd.OpenQuery "CCreaData"
DoCmd.SetWarnings True

'Exportamos los datos a Excel
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "Data", miExcel

'Borramos la tabla temporal
DoCmd.DeleteObject acTable, "Data"

'Lanzamos un mensaje de aviso
MsgBox "Exportación realizada correctamente", vbInformation, "OK"
End Sub
...

Y ya lo tienes.

Pruébalo en una copia tanto de tu Excel como de tu BD antes de aplicarlo directamente a tus originales (simplemente por precaución).

Si también quieres probar un poco antes puedes bajarte esta miniBD que te he preparado: http://www.filebig.net/files/KkwJitAVpY

Ya me dirás qué tal.

Un saludo,

Neckkito (... http://neckkito.eu5.org ... // ... http://neckkito.16mb.com/Access ...)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Exportar consulta a excel

Publicado por Gustavo (1 intervención) el 08/06/2012 08:15:32
Hola neckito, probe tu codigo, de hecho baje tu base de datos del link, y al ejecutar "exportar" el archivo de excelque se crea al abrirlo me dice que su formato o extension no es valido. A que se debe el error??

Gracias!
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
Imágen de perfil de Neckkito

Exportar consulta a excel

Publicado por Neckkito (1104 intervenciones) el 08/06/2012 21:17:38
Hola, Gustavo:

He probado el ejemplo (por seguridad, porque lógicamente cuando lo preparé lo testeé) y, en principio, no me da ningún tipo de error.

Con toda probabilidad el error te vendrá dado por el formato de exportación a Excel. Es decir, que la extensión de archivo (en este caso xlsx) debe ir acompañada, en el código, con el tipo de Excel que el código exporta.

Esa línea te la da: DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "Data", miExcel

El argumento que te define el tipo de archivo es, en este caso, acSpreadsheetTypeExcel8

Si te vas al código y situas el cursor sobre acSpreadsheetTypeExcel8 (haciendo un click), y a continuación pulsas F1, te saldrá la ayuda, donde podrás ver todos los argumentos posibles que puedes utilizar y qué tipo de archivo gestionan. Otra manera de obtener esa información es, en la ayuda del VBE, buscar "AcSpreadSheetType (enumeración)"

Tienes que encontrar el tipo de argumento que coincida con el tipo de archivo que estás creando.

Para tu informarción te comento que he probado creando un archivo con extensión de Access 2003, es decir, "xls", y el código me ha seguido funcionando correctamente, sin cambiar más que la extensión en la línea <miExcel = Application.CurrentProject.Path & "\ExportarExcel.xls">

A ver si con estas pistas puedes resolver el problema.

Un saludo,

Neckkito
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

Exportar consulta a excel

Publicado por Gustavo (1 intervención) el 08/06/2012 22:19:47
Tenias razon, esa era la causa y ya lo arregle y funciona perfecto gracias!!!
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

Exportar consulta a excel

Publicado por Jhoan (2 intervenciones) el 01/07/2014 19:19:16
necesito ayuda con una tema que estoy llevando, tengo una lista desplegable la cual depende de otra lista, quiero agregarle un combobox que tenga comentarios según lo que selecciones en el segundo
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