我正在使用以下代码将* .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)”。然后单击“另存为”为您的导入规范命名。
然后,当您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] 删除。
我来说两句