5

我正在尝试使用 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

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

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

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

4

1 回答 1

12

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

我发现通用的唯一方法(没有使用FileSystemObject,Split(s, vbTab)等“滚动你自己的”代码)是为所有 255 个可能的字段创建一个完全通用的规范并使用它。它需要一次性设置,如下所示:

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

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

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

导入1.png

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

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

导入2.png

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

导入3.png

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

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

DoCmd.TransferText _
        TransferType:=acImportDelim, _
        SpecificationName:="GenericTabSpecification", _
        TableName:="newTable", _
        FileName:="C:\Users\Gord\Desktop\foo.txt", _
        HasFieldNames:=False
于 2013-11-13T21:07:05.093 回答