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