代码之家  ›  专栏  ›  技术社区  ›  Albert

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

  •  9
  • Albert  · 技术社区  · 14 年前

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

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

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

    有什么想法吗?

    3 回复  |  直到 11 年前
        1
  •  14
  •   BenV Langley    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 是工作表名称。

        2
  •  11
  •   Albert    14 年前

    这是我使用的完整模块。

    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
    
        3
  •  4
  •   corysus    12 年前

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

    以下是代码:

    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
    
    推荐文章