ストアド プロシージャは、実際には 0 または 1 の値を 1 つだけ返すようです。これは、多くの場合、スカラー値 (値のセットまたはコレクションではなく単一の値) と呼ばれます。
また、ストアド プロシージャにパラメーターを渡す必要があるようです。これは、多くの場合、パラメーター化されたクエリと呼ばれます。ご存じのとおり、パラメーターを使用しないストアド プロシージャを作成することもできます。
Set con = New ADODB.connection
Set rs = New ADODB.Recordset
rs.CursorType = adOpenForwardOnly
rs.LockType = adLockReadOnly
con.Open "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" '// Connection string.
Dim cmd as New ADODb.Command
cmd.CommandTimeout = 5
cmd.ActiveConnection = con
cmd.CommandText = "SQL GOES HERE"
cmd.CommandType = acCmdStoredProc
Dim param
Set param = cmd.CreateParameter("@productid", adInteger, adParamInput, 0, 0)
cmd.Parameters.Append param
cmd.Parameters("@productid") = 15 'Return the product with ProductID = 15
Set rs = cmd.Execute
'or use:
'rs.Open cmd
Debug.Print rs(0)
rs.close
Set rs = Nothing
Set cmd = Nothing
con.close
Set con = Nothing
Microsoft には、これに関する記事があります。VBScript を使用して記述されていますが、VBA に簡単に適応させることができます。
http://support.microsoft.com/kb/200190
SO:
How to access SQL Server scalar functions in MS Access VB でこれを確認することもできます。