如何将 Access 数据库中的所有表导出到 Excel - 每个表的工作表

Posted

技术标签:

【中文标题】如何将 Access 数据库中的所有表导出到 Excel - 每个表的工作表【英文标题】:How to export all tables from an Access Database into Excel - A sheet for each table 【发布时间】:2010-10-27 19:12:54 【问题描述】:

我有一个包含大约 30 个表的 Access 数据库。

如何将所有 30 个表格导出到 Excel 工作簿中的单独工作表中?

我希望找到一些可以在 Access 中运行的 VBA/VBS 代码来完成这项任务。

有什么想法吗?

【问题讨论】:

【参考方案1】:

你应该可以做这样的事情:

Dim tbl as Tabledef
For Each tbl in Currentdb.TableDefs
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tbl.name, "PathName.xls", True, tbl.name
Next

第二个tbl.name 是工作表名称。

【讨论】:

【参考方案2】:

这是我使用的完整模块。

Sub expotT()
 Dim td As DAO.TableDef, db As DAO.Database
 Set db = CurrentDb()
 For Each td In db.TableDefs
    If Left(td.Name, 4) <> "msys" Then
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
    td.Name, "C:\xExcelTables.xls", True, td.Name
    End If 
Next
End Sub

【讨论】:

这对我很有帮助。我收到一个错误答案代码,告诉我缺少“Msys *”表。感谢您的工作!【参考方案3】:

这是上述代码的格式化和固定版本。 我们不需要 Excel 文件中的 MSys 表和工作表名称中的 dbo 前缀。 也可以相对于 MS Access db 或固定导出。

代码如下:

Sub exportTables2XLS()
Dim td As DAO.TableDef, db As DAO.Database
Dim out_file As String

out_file = CurrentProject.path & "\excel_out.xls" 

Set db = CurrentDb()
   For Each td In db.TableDefs
     If Left(td.Name, 4) = "MSys" Then
     '// do nothing -- skip
   Else
     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
     td.Name, out_file, True, Replace(td.Name, "dbo_", "")
   End If 
   Next
End Sub

【讨论】:

以上是关于如何将 Access 数据库中的所有表导出到 Excel - 每个表的工作表的主要内容,如果未能解决你的问题,请参考以下文章

如何通过java代码将access数据库表中的数据导出生成excel格式的文件,谢谢各位。

将 mysql 表导出到 ms Access 表中的最快/安全方式

将具有多个表的 Access 数据库导出到具有多个工作表的 Excel

Excel VBA:将表数据导出到 Access。如果 2 个字段的主键已经存在,如何覆盖?

将值从 Excel 工作表导出到 Access 记录

将我的 Access 表导出到 Excel,但将列中的不同值拆分到不同的工作表中