错误3011 VBA在access中把所有表导出为txt。

问题描述 投票:0回答:1

我是Visual Basic的新手,我想把ms access中的所有表格导出到一个文本文件中。

我有这样的代码

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:  :
ms-access access-vba
1个回答
0
投票

我也遇到过这样的问题,我发现其中一个表的字段名与规范中定义的不同。你必须为该表创建一个不同的规范,其列名在其他表中不存在。

© www.soinside.com 2019 - 2024. All rights reserved.