我有一个包含~30个表的Access数据库。
如何将所有30个表导出到Excel工作簿中的单独工作表中?
我希望找到一些可以在Access中运行的VBA / VBS代码来完成此任务。
有什么想法吗?
答案 0 :(得分:14)
你应该可以这样做:
Dim tbl as Tabledef
For Each tbl in Currentdb.TableDefs
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tbl.name, "PathName.xls", True, tbl.name
Next
第二个tbl.name
是工作表名称。
答案 1 :(得分: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
答案 2 :(得分:4)
以上是上述代码的格式化和修复版。 我们不需要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