查询带有标题的制表符分隔的文本文件时出现 VBA 错误 - “没有为一个或多个必需参数提供值”

Posted

技术标签:

【中文标题】查询带有标题的制表符分隔的文本文件时出现 VBA 错误 - “没有为一个或多个必需参数提供值”【英文标题】:VBA error while querying a Tab limited Text file with headers - "no value given for one or more required parameters" 【发布时间】:2020-10-18 18:42:22 【问题描述】:

我的文本文件是制表符分隔的,并且确实有 标题字段 "Datum"。我打算将两个给定时间戳(沿行)之间的数据读入 Excel 文件,并认为使用 ADO 和 SQL 方法是最好的方法,因为这样可以避免使用数组和循环。

我的文本文件如下所示:

    Sub FetchZaehlerData()

        Dim wb As Workbook
        Set wb = ThisWorkbook
        Dim myConn As New ADODB.Connection
        Dim myRecordSet As New ADODB.Recordset
        Dim mysqlQry As String
        
        Dim myFSO As Object
        Set myFSO = CreateObject("Scripting.FileSystemObject")
        Dim myFilePath As String
        
        myFilePath = "P:\PROJECTFILES\O&M\Metering Data\2020\01_2020\LS20200201"
        
        myConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & myFilePath & ";" & _
                "Extended Properties='text;HDR=YES';"
                
        
        
        mySQLQry = "SELECT [Datum] FROM [TenneT2_P802_20200201064325.txt]"
        
        Debug.Print mySQLQry
        
        myRecordSet.Open mySQLQry, myConn
        
        wb.Worksheets("Sheet2").Range("F3").CopyFromRecordset myRecordSet
        
        myRecordSet.Close
        myConn.Close
    
    Exit Sub  

【问题讨论】:

【参考方案1】:

    您需要在 ConnectionString 的扩展属性部分指定FMT=TabDelimited

    您需要提供一个 schema.ini 文件,如回答 here

很遗憾,错误消息与您遇到的问题没有任何关系,但如果您解决了我提出的两点,“它应该都能正常工作”。

【讨论】:

以上是关于查询带有标题的制表符分隔的文本文件时出现 VBA 错误 - “没有为一个或多个必需参数提供值”的主要内容,如果未能解决你的问题,请参考以下文章

如何将制表符分隔的文本文件导入 Excel?

导入带分隔符的文本

导入 CSV 文件时出现问题 (phpmyadmin)

在 VBA 中使用文件对话框

使用模式加载数据时出现 Apache Pig ClassCast 异常

从制表符分隔的 xls 文件中读取数据