Ms access 目标中不存在VBA Access导入字段-字段名已被乱码

Ms access 目标中不存在VBA Access导入字段-字段名已被乱码,ms-access,import,ms-access-2007,vba,Ms Access,Import,Ms Access 2007,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", _

我正在使用以下代码将*.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文件中的字段名都是name。这也是*.csv文件的第一列。我还将HasFieldNames设置为False,并将access中的第一列名称更改为F1,这似乎有效,因此我认为导入没有任何问题

access为什么读取这些不在*.csv或表格中的奇怪字符,然后中断导入?

这些字符就是UTF-8 BOM

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

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

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

DoCmd.TransferText TransferType:=acImportDelim_ SpecificationName:=您的表导入规范_ TableName:=您的表_ 文件名:=C:\Users\hans\Documents\YourTable.csv_ HasFieldNames:=True .SelectedItems.Item1是否在With语句中使用?你能把全部代码都贴出来吗?