使用VBA将制表符分隔的txt导入Access表

sio*_*orn 5 ms-access vba etl access-vba

我试图使用VBA将制表符分隔的txt文件导入Access表.在我的代码中,我想将其插入到尚未创建的表中.

这是我尝试做的.注意 - 我能够使用CSV进行此操作,并且不包括此:DataType:=xlDelimited, Tab:=True

Sub InsertData()

    'import CSV into temp table
    DoCmd.TransferText TransferType:=acLinkDelim, TableName:="tbl_TEMP", _
    FileName:=FileNameVariable, HasFieldNames:=True, DataType:=xlDelimited, Tab:=True

End Sub
Run Code Online (Sandbox Code Playgroud)

当我运行此块时,我收到以下错误 DataType:=xlDelimited, Tab:=True

编译错误:找不到命名参数

我应该如何更改这个以便拉入制表符分隔的txt文件,以便txt中的每一列在Access中都有自己的列?

Gor*_*son 11

正如您从该主题的其他文章中看到的那样,实际上没有一种通用方法来导入制表符分隔的文本文件.我见过的所有其他解决方案都说你应该导入一次制表符分隔的文本文件,保存导入规范,然后对所有后续导入使用该导入规范.问题在于,如果要导入不同的制表符分隔文件,则规范可能不匹配.

我发现一般做到这一点的唯一方法(使用短"滚动自己的"代码的FileSystemObject,Split(s, vbTab)等等)是为所有人创造255个可能的字段一个完全通用的规范和使用.它需要一次性设置如下:

此处复制Pastebin中的CSV数据,将其粘贴到您喜欢的文本编辑器中,并将其另存为GenericTabSpecification.csv.

在Excel中打开该文件,选择所有256行和4列,然后按Ctrl+ C进行复制.

在Access中,启动文本文件的导入向导,然后选择任何制表符分隔的文件.(我们实际上不会导入它.)

Import1.png

当您到达向导的第一页时,单击"高级..."按钮.

在"导入规范"对话框中,验证设置(字段分隔符,文本限定符等),然后单击"字段信息"网格的左上角,以便选择所有行:

Import2.png

Ctrl+ V将Excel中的数据粘贴到网格中.网格现在应该包含255行.

Import3.png

单击"另存为..."按钮并命名规范GenericTabSpecification.完成后,取消向导.

现在我们可以使用这样的语句从VBA进行泛型导入

DoCmd.TransferText _
        TransferType:=acImportDelim, _
        SpecificationName:="GenericTabSpecification", _
        TableName:="newTable", _
        FileName:="C:\Users\Gord\Desktop\foo.txt", _
        HasFieldNames:=False
Run Code Online (Sandbox Code Playgroud)