如何使用ADO在Excel自定义函数中查询访问数据库

时间:2017-05-08 14:44:58

标签: excel-vba ms-access ado ms-access-2016 vba

我正在尝试使用自定义函数复制VLOOKUP功能,以便从Access DB中将数据提取到Excel电子表格中。从来没有这样做,但我的理解是,这应该工作:

Function query(lookup_value)

    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sQRY As String
    Dim strFilePath As String

    strFilePath = "Z:\filepath\database.accdb"

    Set cnn = New ADODB.Connection
    Set rs = New ADODB.Recordset

    cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " & strFilePath & ";Jet OLEDB:Database Password=password;"
    cnn.Open

    sQRY = "SELECT TOP 1 Ethnic FROM central_reference_table WHERE LearnerCode = '" & lookup_value & "'"

    rs.Open sQRY, cnn

    query = rs.Fields(0).Value

    rs.Close
    Set rs = Nothing
    cnn.Close
    Set cnn = Nothing


End Function

代码运行,但返回通用#VALUE错误。我可以在带有Sheet1.Range("A1").CopyFromRecordSet的Sub中使用相同的连接字符串,它将按预期运行,将数据库中的第一行删除到我的工作表中。所以它必须是问题的query = rs.Fields(0).Value,但我在网上找到的所有内容都说这是正确的方法,所以我很茫然。

0 个答案:

没有答案