Состояние вопроса:
Я больше не думаю, что имеет отношение к тому, что я ссылаюсь на Excel или что запрос имеет параметры. Я думаю, что вопрос сводится к следующему: Как я могу использовать запрос Access, который использует функции, определенные Access-VBA в Word VBA?
Что я хочу сделать невозможно , как я могу заставить встроенную версию функции 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 не определена.
Идеи
UPDATE
В ответ на комментарий: Да, запрос отлично работает в Access.
Кроме того, просто заметка, это все Office 2007.
ОБНОВЛЕНИЕ 2
Мы переходим от Access к Word, потому что программа VBA уже есть в Word, но ей нужно кое-что обработать, что не очень удобно в VBA.
Переход к созданию объекта приложения Excel не оказывает никакого влияния, кроме резкого замедления запроса.
ОБНОВЛЕНИЕ 3
У меня есть ссылка на Excel как в Word, так и в Access. (Если есть лучший способ получить функцию acos, я, безусловно, открыт для нее.)