VBA访问导入字段在目标中不存在-字段名乱码

瓦尔基

我正在使用以下代码将* .csv文件导入到Access表中:

Dim fd As FileDialog

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    If .Show = -1 Then

        DoCmd.TransferText TransferType:=acImportDelim, _
            TableName:="New References", _
            FileName:=.SelectedItems.Item(1), _
            HasFieldNames:=True

        TextReferenceImport = .SelectedItems.Item(1)
    Else
        TextReferenceImport = ""
    End If
End With

Set fd = Nothing

但是,出现以下错误:

Microsoft Visual Basic
Field 'Name' doesn't exist in destination table 'New references.'

显然,Access和* .csv文件中的字段名称均为“名称”。这也是* .csv文件的第一列。我还将HasFieldNames设置为False,并将访问中的第一列名称更改为F1,这似乎可行,因此我认为导入没有任何问题。

为什么访问会读取* .csv或表中不存在的这些奇怪字符,从而破坏导入?

汉素

这些字符是UTF-8 BOM(字节顺序标记)。

除非在进行导入之前将它们从CSV中删除是切实可行的,否则我认为您将需要创建一个导入规范。

从Access用户界面手动开始导入。选择CSV文件后,“导入文本向导”的第二页中选择“第一行包含字段名称然后单击“高级”按钮,并在导入规范对话框中“代码页”属性选择“ Unicode(UTF-8)”然后单击“另存为”为您的导入规范命名。

以Unicode(UTF-8)作为代码页的导入规范

然后,当您DoCmd.TransferText从VBA调用时,可以使用该保存的导入规范这是我在Access 2007中测试的示例...

DoCmd.TransferText TransferType:=acImportDelim, _
    SpecificationName:="YourTable Import Specification", _
    TableName:="YourTable", _
    FileName:="C:\Users\hans\Documents\YourTable.csv", _
    HasFieldNames:=True

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章