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

Alb*_*ert 11 vbscript excel ms-access vba access-vba

我有一个包含~30个表的Access数据库.

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

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

有任何想法吗?

Ben*_*enV 16

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

Dim tbl as Tabledef
For Each tbl in Currentdb.TableDefs
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tbl.name, "PathName.xls", True, tbl.name
Next
Run Code Online (Sandbox Code Playgroud)

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


Alb*_*ert 11

这是我使用的完整模块.

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
Run Code Online (Sandbox Code Playgroud)


小智 6

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

这是代码:

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
Run Code Online (Sandbox Code Playgroud)