6

我有一个将数据导出到 CSV 文件的外部程序。我的用户希望通过 Excel 中的 VBA 函数访问这些数据。为了做到这一点,我考虑将读取的 CSV 文件包装到一个返回 ADODB.Recordset 的函数中。我的代码是

Public Function getData(fileName As String) As ADODB.Recordset
Dim path As String
path = "C:\testDir\"
Dim cN As New ADODB.Connection
Dim RS As New ADODB.Recordset
cN.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=" & path & ";" & _
               "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""")
RS.ActiveConnection = cN
RS.Source = "select * from " & fileName
Set getData = RS
End Function

我正在尝试使用调用此函数

Dim a As ADODB.Recordset
Set a = getData("testFile.csv")
a.Open()

此时,我收到一个编译错误,提示“=”预期。有人可以指出我应该如何调用我的函数并遍历数据的正确方向吗?

4

1 回答 1

9

通过我自己的一些调整以及蒂姆·威廉姆斯的意见解决了这个问题。这是其他可能需要帮助的人的代码

Public Function getData(fileName As String) As ADODB.Recordset

    Dim path As String
    path = "C:\testDir\"
    Dim cN As ADODB.Connection
    Dim RS As ADODB.Recordset
    Set cN = new ADODB.Connection
    Set RS = new ADODB.Recordset
    cN.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=" & path & ";" & _
                   "Extended Properties=""text; HDR=Yes; FMT=Delimited; IMEX=1;""")
    RS.ActiveConnection = cN
    RS.Source = "select * from " & fileName
    Set getData = RS

End Function

现在,该函数可以称为

Dim a As ADODB.Recordset
Set a = getData("testFile.csv")
a.Open
MsgBox(a.GetString())
a.Close
于 2012-07-24T18:37:45.510 回答