Ms access MS Access 2003/2007-从VBA中使用的csv文件导入数据的导入规范……验证字段名?

Ms access MS Access 2003/2007-从VBA中使用的csv文件导入数据的导入规范……验证字段名?,ms-access,vba,csv,import,ms-access-2003,Ms Access,Vba,Csv,Import,Ms Access 2003,我有一个向导导入,至少足够保存规范。它导入带有标题、引号文本限定符和逗号分隔符的CSV文件。然后,我在一些vba中使用导入规范,这些vba从按钮单击事件触发 以下是我想知道的一些事情: 那么,如果数据中的字段顺序不正确,导入会失败吗?如果数据不包含所有字段,导入会失败吗?如果数据中有额外字段,导入会失败吗 那么,我是否可以对导入的数据进行任何类型的验证,以确保字段与规范相同,顺序正确(如果需要的话),等等 这工作得很好,但我只是看到,如果数据中的某些内容不正常,它无论如何都会导入,并将整个时间都

我有一个向导导入,至少足够保存规范。它导入带有标题、引号文本限定符和逗号分隔符的CSV文件。然后,我在一些vba中使用导入规范,这些vba从按钮单击事件触发

以下是我想知道的一些事情:

那么,如果数据中的字段顺序不正确,导入会失败吗?如果数据不包含所有字段,导入会失败吗?如果数据中有额外字段,导入会失败吗

那么,我是否可以对导入的数据进行任何类型的验证,以确保字段与规范相同,顺序正确(如果需要的话),等等

这工作得很好,但我只是看到,如果数据中的某些内容不正常,它无论如何都会导入,并将整个时间都浪费掉

另外…这不是一个典型的访问设置…这主要是为数据分析师团队将文件导入mdb…没有前端

谢谢
justin

您可以使用ADO记录集检查CSV文件

Public Sub InspectCsvFile()
    Const cstrFolder As String = "C:\Access\webforums"
    Const cstrFile As String = "temp.csv"
    Dim i As Integer
    Dim strConnect As String
    Dim strSql As String

    'early binding requires reference, Microsoft ActiveX Data Object Library '
    'Dim cn As ADODB.Connection '
    'Dim rs As ADODB.Recordset '
    'Dim fld As ADODB.Field '
    'Set cn = New ADODB.Connection '
    'Set rs = New ADODB.Recordset '

    'late binding; no reference needed '
    Dim cn As Object
    Dim rs As Object
    Dim fld As Object
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        cstrFolder & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
    'Debug.Print strConnect '
    cn.Open strConnect
    strSql = "SELECT * FROM " & cstrFile & ";"
    rs.Open strSql, cn
    Debug.Print "Fields.Count: " & rs.Fields.Count
    For i = 0 To rs.Fields.Count - 1
        Set fld = rs.Fields(i)
        Debug.Print i + 1, fld.Name, fld.Type
    Next i
    Set fld = Nothing
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

如果该连接字符串不适用于您,请参见

我将以正确的格式向他们提供受保护的电子表格。这种保护确保他们不能改变它


如果导入失败,请向他们提供错误报告。

我能想到的唯一方法是尝试链接到电子表格,并在运行导入之前检查列是否符合预期。如果这不起作用,您还可以自动化Excel并从Excel中获取此信息。但这些听起来都比你想要的复杂。我要说的是,捕获错误并告诉人们格式化他们的电子表格以匹配模板。对于文本数据源,您可以将连接字符串指向可以找到源文件的位置。所以cstrFolder是我的文件完整路径的文件夹部分:C:\Access\webforums\temp.csv