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

How can I use ADO to query access db in Excel custom functions

我几乎在尝试使用自定义函数复制 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

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

如果您更正此问题:

Set rs = New ADODB.Record

对此:

Set rs = New ADODB.RecordSet

然后它将作为一个函数工作,前提是数据库路径是正确的并且实际上有符合输入条件的记录。你真的应该为此添加一些错误处理。