2010-10-27 79 views
8

Tôi có cơ sở dữ liệu Access với ~ 30 bảng.Cách xuất tất cả các bảng từ Cơ sở dữ liệu Access sang Excel - Trang tính cho mỗi bảng

Làm cách nào để xuất tất cả 30 bảng thành các trang tính riêng biệt trong sổ làm việc Excel?

Tôi hy vọng sẽ tìm thấy một số mã VBA/VBS mà tôi có thể chạy từ bên trong Access để thực hiện tác vụ này.

Bất kỳ ý tưởng nào?

+2

Bạn đã thử bất cứ điều gì chưa? – Buggabill

Trả lời

14

Bạn sẽ có thể làm điều gì đó như thế này:

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

Thứ hai tbl.name là tên bảng.

8

Đây là mô-đun đầy đủ mà tôi đã sử dụng.

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

Điều này rất hữu ích cho tôi. Tôi đã nhận được một lỗi với mã câu trả lời nói với tôi rằng một bảng "Msys *" đã bị mất tích. Tôi đánh giá cao công việc của bạn xung quanh! – Huntdogg

3

Đây là phiên bản được định dạng và cố định của mã trên. Chúng tôi không cần các bảng MSys trong tệp excel và tiền tố dbo trong các tên trang tính. Xuất cũng có thể được thực hiện liên quan đến MS Access db hoặc cố định.

Đây là mã:

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 
Các vấn đề liên quan