A un fichero XLS
Sub ExportarTablas() Dim tbl As TableDef For Each tbl In CurrentDb.TableDefs If Left(tbl.Name, 4) <> "msys" Then DoCmd.TransferSpreadsheet acExport, 8, tbl.Name, _ CurrentProject.path & "\Tablas.xls", True, tbl.Name End If Next End Sub
A un fichero XLSX
Sub ExportarTablas() Dim tbl As TableDef For Each tbl In CurrentDb.TableDefs If Left(tbl.Name, 4) <> "msys" Then DoCmd.TransferSpreadsheet acExport, 10, tbl.Name, _ CurrentProject.path & "\Tablas.xlsx", True, tbl.Name End If Next End Sub
Notas
Ambas subrutinas crearán o sobrescribirán, si ya existe, en la ruta del fichero Access un fichero llamado Tablas.xls o Tablas.xlsx que contendrá todas las tablas del mismo.
La principal diferencia observable entre ambas extensiones, XLS (Excel 2000 format) y XLSX (Excel 2010 format), será que el fichero XLSX al ser un fichero comprimido tendrá un tamaño menor. Además al exportar desde Access como XLS el tipo de letra por defecto será MS Sans Serif, mientras que como XLSX emplearé el tipo de letra por defecto de Excel (Calibri en este caso).
Con anterioridad vimos cómo exportar una tabla o consulta de Access como CSV. Para exportar como un fichero de Excel la sintaxis es prácticamente idéntica, salvo que en ahora emplearemos DoCmd.TransferSpreadsheet en lugar de DoCmd.TransferText. Hay numerosos códigos en la red muy similares. Empleamos un bucle por todas las tablas de Access, introducimos un condición —if...then— para que compruebe si el nombre de la tabla comienza por MSys (MSysObjects tables) pues al intentar exportar estas tablas del sistema, el código arrojaría el siguiente error.
Referencias
No hay comentarios:
Publicar un comentario