如何使用 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
然后它将作为一个函数工作,前提是数据库路径是正确的并且实际上有符合输入条件的记录。你真的应该为此添加一些错误处理。
我几乎在尝试使用自定义函数复制 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
然后它将作为一个函数工作,前提是数据库路径是正确的并且实际上有符合输入条件的记录。你真的应该为此添加一些错误处理。