gpt4 book ai didi

excel - 使用 VBA OpenRecordset 从 Access Query 到 Excel 的用户定义函数 (UDF) 失败 - 未定义函数

转载 作者:行者123 更新时间:2023-12-04 20:28:05 24 4
gpt4 key购买 nike

如果 Excel 有 UDF,我如何从 Access 中获取查询结果?

我收到以下错误:“ 运行时错误‘3085’:表达式中未定义的函数‘XXXX’”。从 Excel VBA 打开( Access 查询)记录集时发生错误。正在打开的查询具有触发错误的用户定义函数 (UDF)。

代码在 Excel Office 365 中。查询在 Access Office 365 中。

我已经成功地使用了被调用的查询(以及其他使用 UDF 的查询)大约十二个月,并且“突然”它不再工作了。我用谷歌搜索并测试了许多选项,但都没有成功。

大多数线程说它无法完成,或者不使用 udf 但尝试使用内置的。我正在挑战这些回应,因为它以前曾奏效过。我使用的主要 udf 是一个名为“iMax”的 udf,它在其他帖子中有所介绍。它的功能类似于 Excel 中的 max()。 (No max(x,y) function in Access)

我还看到建议分两步执行此操作的线程: 1 - 将查询更改为生成表查询。 2 - 将表格结果拉入 Excel。虽然我可能会侥幸逃脱(经过多次返工),但它会导致我制作许多包含成千上万行的临时表,并且看起来不太流畅。

我已经编译了 vba 并压缩了数据库,对我的问题没有影响。

作为一个长镜头,我创建了一个虚拟数据库,其中包含一个返回数字 1 的简单 udf 公共(public)函数、一个返回三个记录的简单查询和一个用于函数结果的字段。拉入 Excel 时会出现相同的错误。

Sub RunQuery()
Dim MyDatabase As dao.Database
Dim qdf As dao.QueryDef
Dim rs As dao.Recordset
Dim qryname As object
Dim SheetName As String

Set MyDatabase = DBEngine.OpenDatabase _
("SomePath\SomeFilename.accdb")

For Each qryname In Range("SomeRange")
Set rs = MyDatabase.OpenRecordset(qryname) '<<<ERROR IS HERE
SheetName = "SomeSheetName"
With Sheets(SheetName)
.ListObjects(SomeTableName).DataBodyRange.Rows.ClearContents
.Range("A2").CopyFromRecordset rs
End With
Set rs = Nothing
Set qdf = Nothing
Next qryname

End Sub

对于 For 循环中没有 udf 的所有查询,结果将被提取并转储到 Excel 中的一系列表中。在“Set rs = Mydatabase.OpenRecordset(qryname)

最佳答案

Most threads say it can't be done,



他们是对的。

您唯一的选择是使用自动化打开 Access 实例,并在其中运行查询。

关于excel - 使用 VBA OpenRecordset 从 Access Query 到 Excel 的用户定义函数 (UDF) 失败 - 未定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55869041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com