问题描述
我得到了一个包含 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 format 和 schema
所以你必须用按键或鼠标点击 3 x 200 次,然后在大约 10 分钟内完成工作。