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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: excel ms-access vbscript vba


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-19
        相关资源
        最近更新 更多