我有一个外部程序将数据导出到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
Run Code Online (Sandbox Code Playgroud)
我试图使用这个函数
Dim a As ADODB.Recordset
Set a = getData("testFile.csv")
a.Open()
Run Code Online (Sandbox Code Playgroud)
此时,我得到一个编译错误,说'='预期.有人能指出我应该如何调用我的函数并循环访问数据吗?
小智 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
Run Code Online (Sandbox Code Playgroud)
现在,该函数可以被称为
Dim a As ADODB.Recordset
Set a = getData("testFile.csv")
a.Open
MsgBox(a.GetString())
a.Close
Run Code Online (Sandbox Code Playgroud)