1

我目前有一个大表的数据源,位于 workbook1 中。从当前为空的工作簿 2 中,我希望建立到工作簿 1 的 DSN 连接,以便我可以从工作簿 2 中查询它。

在 SQL 查询结果中,我希望显示使用用户定义的 VBA 函数计算的额外列,其参数将是数据源中的其他字段。

例子:

Workbook1 是 Field1、F2、F3 和 F4。我希望查询并显示所有记录,但另外我希望有F5=UDF(F3,F4).

我已经被告知解决这个问题的方法是:

SELECT UDF(F3,F4) as F5 
FROM \SourceWorkBookLocation\SourceWorkBook

访问中:我在访问中遇到的问题现在不在我的列表顶部,与数据类型有关,并试图确定字符串中的数字是否<25。但主要问题在于 MS Query:

在 Excel/MS 查询中:

该功能只是无法识别;“未定义的函数”我不知道如何让它看到函数?我的最终目标是在 excel 中构建前端,并使用传递给查询的用户输入变量适当地进行 vba 查询。查询将在单独更新的工作簿上完成。

关于如何让 MS Query 查看我的 UDF 并接受我在做什么的任何想法?会不会是驱动问题?有一系列 excel 驱动程序可供选择。

谢谢

4

1 回答 1

0

查看您提供的信息,您尝试使用两个 Excel 工作簿作为表格来使用 Excel VBA UDF 进行查询。现在我假设您将在 MS Access 中使用这些工作簿作为您的表格。

所有大多数数据库都能够读取standard SQL。看到的事情是每个数据库都能够处理在自己的空间中写入的函数。在您的情况下,请在 Access VBA 中编写您的 UDF。然后尝试执行相同的操作。

这是人们有时会面临的一个常见问题,要么是厌倦了从 Excel 访问 MS Access UDF,要么反之亦然。简而言之,当您运行 MS Access 时,查询可以回调到 VBA。但是当您通过ODBCorADO时,JET 引擎没有完整的 VBA 模型可供使用,因为它根本没有运行。

你可以尝试做这样的事情:

Dim objExcl As Object     
Set objExcl = CreateObject("Excel.Application")     
objExcl.OpenCurrentDatabase "ExcelFileName/Path"     
objExcl.Run ("UDFName")    
objExcl.CloseCurrentDatabase     
Set objExcl = Nothing

坦率地说,我更喜欢将 UDF 移入 Acces ..

参考:

于 2013-02-02T08:49:14.627 回答