Как экспортировать все таблицы из базы данных Access в Excel - лист для каждой таблицы - PullRequest
9 голосов
/ 27 октября 2010

У меня есть база данных Access с ~ 30 таблицами.

Как я могу экспортировать все 30 таблиц в отдельные листы в книге Excel?

Я надеюсь найти код VBA / VBS, который можно запустить из Access для выполнения этой задачи.

Есть идеи?

Ответы [ 3 ]

14 голосов
/ 27 октября 2010

Вы должны быть в состоянии сделать что-то вроде этого:

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

Второй tbl.name - это имя листа.

11 голосов
/ 29 октября 2010

Вот полный модуль, который я использовал.

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
4 голосов
/ 06 ноября 2012

Здесь отформатированная и исправленная версия приведенного выше кода.Нам не нужны таблицы MSys в файле Excel и префикс 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
...