将所有 Microsoft Access 表导出到单独的 CSV 文件中

问题描述

我得到了一个包含 200 个表的 .mdb。 我想编写一个将数据导出到单独的 CSV 的 vba 例程。

在谷歌上我找到了这个代码

Public Sub ExportAllTablesToCSV()

    Dim i As Integer
    Dim name As String
    
    For i = 0 To CurrentDb.TableDefs.Count
        name = CurrentDb.TableDefs(i).name
        
        If Not Left(name,4) = "msys" And Not Left(name,1) = "~" Then
            DoCmd.TransferText acExportDelim,"",name,_
                "c:\exports\" & name & ".csv",_
                True
        End If
    
    Next i

End Sub

看起来没问题,但它需要一个导出规范(acExportDelim 之后的参数”),这使得脚本无用,因为我不想手动创建 200 个导出规范。

有什么想法吗?

解决方法

您确定要使用 CSV 选项吗?由于这种格式无法将表导入回 ms access(导致未保存数据架构),因此您需要 200 个带有架构的文件。好的,如果 csv - 有一个页面 https://docs.microsoft.com/en-us/office/vba/api/access.docmd.transfertext。我,我尝试了其他更方便的 XML 方式如果您想以可转换格式保存表格

Dim db As DAO.Database
Dim td As DAO.TableDefs

Set db = CurrentDb()
Set td = db.TableDefs
For Each t In td    'loop through all the fields of the tables
    'Ignore any system tables
    If Left(t.Name,4) = "MSys" Then GoTo Continue
        DoCmd.OutputTo acOutputTable,t.Name,_
       (strPathAndFileName & t.Name & ".xml"),False   
Continue:
Next

` 系统将提示您输入格式确认选择的任何 t formatschema

所以你必须用按键或鼠标点击 3 x 200 次,然后在大约 10 分钟内完成工作。