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 に答える