错误 3011 VBA 在访问中将所有表导出到 txt
Posted
技术标签:
【中文标题】错误 3011 VBA 在访问中将所有表导出到 txt【英文标题】:Error 3011 VBA exporting all tables to txt in access 【发布时间】:2019-07-23 19:54:45 【问题描述】:我是 Visual Basic 的新手,我正在尝试将 ms 访问中的所有表导出到文本文件。
我有这个代码
Function save2txt() As String
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Error GoTo errHandler
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
For Each tdf In db.TableDefs
' ignore system and temporary tables
If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*") Then
Debug.Print tdf.Name
DoCmd.TransferText transfertype:=acExportDelim, specificationname:="ExportSpec", tablename:=tdf.Name, FileName:=Application.CurrentProject.Path & "\" & tdf.Name & ".txt", hasfieldnames:=True
End If
Next
Set tdf = Nothing
Set db = Nothing
errHandler:
Debug.Print Err.Number & " " & Err.Description
End Function
前 3 个表导出为 .txt,然后出现错误 3011。当我尝试手动导出时,会弹出一个窗口,提示字段不存在。我正在使用通过向导保存的规范进行导出。
这是出现在 MSysIMEXSpec 中的内容:
DateDelim: /
DateFourDigitYear: -1
DateLeadingZeros: 0
DateOrder: 0
DecimalPoint: .
FieldSeparator: ,
FileType: 1252
SpecId: 2
SpecName: ExportSpec
SpecType: 1
StartRow: 0
TextDelim:
TimeDelim: :
【问题讨论】:
不带SpecificationName
参数试试。此外,在您的 errHandler:
标签前添加 Exit Function
语句。如果您的某些表需要schema.ini
文件,您可能必须为每个表指定不同的文件。
我无法删除SpecificationName
,因为它返回给我error 3441
。我使用逗号作为字段分隔符,因此与小数分隔符重叠
使用逗号作为小数分隔符与MSysIMEXSpec
这一行不一致:DecimalPoint: .
。您可以尝试更改字段分隔符。但是您仍然可能需要创建一个或多个 schema.ini
文件才能正确导出所有表。
当我尝试没有SpecificationName
参数时,它只显示十进制错误。我试过只用Format=Delimited(,)
和DecimalSymbol=.
创建一个schema.ini,但它似乎不起作用。所有表的列是否需要相同大小才能使用导出规范导出?因为前三个是导出的,所以只有在到达更大的时候才会停止
我没有足够的信息来进一步帮助您。 Schema.ini 有据可查,网上有大量可搜索的帮助。对不起
【参考方案1】:
我遇到了同样的问题,我发现其中一个表的字段名称与规范中定义的名称不同。您必须为该表创建一个不同的规范,其列名在其他表中不存在。
【讨论】:
以上是关于错误 3011 VBA 在访问中将所有表导出到 txt的主要内容,如果未能解决你的问题,请参考以下文章