2010-10-27 2 views
8

У меня есть база данных Access с ~ 30 таблицами.Как экспортировать все таблицы из базы данных Access в Excel - Лист для каждой таблицы

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

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

Любые идеи?

+2

вы пробовали что-нибудь еще? – Buggabill

ответ

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 это имя рабочего листа.

8

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

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 
+0

Это было очень полезно для меня. Я получил сообщение об ошибке с кодом ответа, в котором говорилось, что таблица «Msys *» отсутствует. Я ценю вашу работу! – Huntdogg

3

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