2010-10-27 12 views

risposta

14

Si dovrebbe essere in grado di fare qualcosa del genere:

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

Il secondo tbl.name è il nome del foglio di lavoro.

8

Ecco il modulo completo che ho usato.

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

Questo è stato molto utile per me. Stavo ricevendo un errore con il codice di risposta che mi diceva che mancava una tabella "Msys *". Apprezzo il tuo lavoro in giro! – Huntdogg

3

Ecco la versione del codice sopra indicata e fissa. Non abbiamo bisogno delle tabelle MSys nel file excel e nel prefisso dbo nei nomi dei fogli. L'esportazione può anche essere fatta in relazione a MS Access db o fisso.

Ecco il codice:

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