【发布时间】:2011-01-25 21:43:37
【问题描述】:
问题状态:
我不再认为我引用 Excel 或查询有参数是相关的。我认为问题归结为:如何使用在 Word VBA 中使用 Access-VBA 定义的函数的 Access 查询?
我想做什么is impossible,如何根据shahkalpesh's answer 使 Acos 函数的内联版本与我的查询一起工作?
我在 Access VBA 中有一个函数:
Public Function Acos(radians As Double) As Double
Acos = WorksheetFunction.Acos(radians)
End Function
WorksheetFunction 来自引用 Excel(我这样做只是因为它定义了 acos 函数)。
我在具有三个参数的查询中使用此函数。然后我在 Word VBA 中运行这个查询,如下所示:
Dim command As New ADODB.command
With command
.ActiveConnection = connection
.CommandText = "MyQueryName"
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter( _
"Param1", adDouble, adParamInput, , param1Value)
.Parameters.Append .CreateParameter( _
"Param2", adDouble, adParamInput, , param2Value)
.Parameters.Append .CreateParameter( _
"Param3", adDouble, adParamInput, , param3Value)
End With
Dim records As New ADODB.Recordset
records.Open command, , adOpenKeyset, adLockOptimistic
我在 Word VBA 中收到一个错误,即未定义函数 Acos。
想法?
更新
回应评论:是的,该查询在 Access 中完美运行。
另外,请注意,这都是 Office 2007。
更新 2
我们将从 Access 转到 Word,因为 VBA 程序已经在 Word 中,但需要进行一些数据处理,而这在 VBA 中并不实际。
更改为创建 Excel 应用程序对象除了显着减慢查询速度之外没有任何效果。
更新 3
我在 Word 和 Access 中都引用了 Excel。 (如果有更好的方法来获取 acos 函数,我当然愿意接受。)
【问题讨论】:
-
您能否在 Access 中运行 Access 查询(使用 Acos)而不会出现任何错误?
-
我本来期望 Set xl = CreateObject("Excel.Application") Acos = xl.WorksheetFunction.Acos(0.1) 另请注意,如果您输入错误的弧度值,您将得到一个错误。
-
另外,我们为什么要从 Access 转到 Word?
-
你没有提到,所以我不得不问。您是否将 Excel DLL 添加到您的 Word 参考库中?
标签: ms-access vba ms-office ado ms-word