État de la question:Comment puis-je utiliser une requête Access qui utilise les fonctions définies par Access-VBA dans Word VBA?
Je ne pense plus il est pertinent que je fais référence Excel ou que la requête a des paramètres. Je pense que la question se résume à ceci: Comment puis-je utiliser une requête Access qui utilise des fonctions définies par Access-VBA dans Word VBA? Ce que je veux faire is impossible, comment puis-je faire fonctionner une version inline de la fonction Acos avec ma requête, comme shahkalpesh's answer?
J'ai une fonction dans Access VBA:
Public Function Acos(radians As Double) As Double
Acos = WorksheetFunction.Acos(radians)
End Function
WorksheetFunction
est en provenance de référencement Excel (que je fais simplement parce qu'il définit la fonction ACOS). J'utilise cette fonction dans une requête qui a trois paramètres. Ensuite, je lance cette requête dans Word VBA comme suit:
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
Je reçois une erreur dans Word VBA que la fonction Acos n'est pas définie.
Des idées?
MISE À JOUR
En réponse au commentaire: Oui, la requête fonctionne parfaitement dans Access.
En outre, une note, tout cela est Office 2007.
MISE À JOUR 2
Nous allons d'accès à Word parce que le programme VBA est déjà dans Word mais doit faire des données croquants ce n'est pas vraiment pratique à faire en VBA.
La modification de la création d'un objet Application Excel n'a aucun effet hormis le ralentissement considérable de la requête.
MISE À JOUR 3
J'ai la référence à Excel dans Word et Access. (S'il y a une meilleure façon d'obtenir une fonction ACOS, je suis certainement ouvert à elle.)
Êtes-vous capable d'exécuter la requête Access (qui utilise Acos) dans Access sans aucune erreur? – shahkalpesh
Oui. Voir la question mise à jour. –
Je me serais attendu Set xl = CreateObject ("Excel.Application") Acos = xl.WorksheetFunction.Acos (0.1) Notez également que si vous entrez dans la mauvaise valeur pour les radians, vous obtiendrez une erreur. – Fionnuala