Excel 将csv文件作为记录集返回
我有一个外部程序,可以将数据导出到CSV文件中。我的用户希望通过excel中的VBA函数访问此数据。为此,我考虑将读取的CSV文件包装到一个返回ADODB.Recordset的函数中。我的代码是Excel 将csv文件作为记录集返回,excel,vba,Excel,Vba,我有一个外部程序,可以将数据导出到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 ADOD
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()
此时,我得到一个编译错误,应该是“=”。有人能告诉我应该如何调用函数并循环数据吗 通过我自己的一些调整以及Tim Williams的输入解决了这个问题。以下是可能需要帮助的其他人的代码
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
a.打开
(不带括号)。请参见@TimWilliams-您可以将您的评论重新键入aswer,以便我可以接受它吗?@CP-您可以接受您自己的答案-对我来说没有问题…解析函数内部的记录集并返回字符串或数组,而不必在创建它的函数外部打开记录集。@JimmyPena-数组会更好肯定比返回记录集更干净。我还有一个函数的第二个实现,它将记录集转换为数组,但没有将其添加到解决方案中,因为它不是原始问题的一部分。但是我更喜欢阵列。我同意,这里应该有一系列帮助函数。此外,还需要Provider=Microsoft.ACE.OLEDB.12.0而不是Jet