Cita: PD: la conexion y la declaracion de los recordset esta bien ya que lo e usado muchas veces, para cualquier tipo de consulta
El problema no lo puedes resolver a simple vista por que estas trabajando con creación de objetos implícita y no tienes control sobre lo que obtienes
Dices que declaras el recordSet en otro lado, más sin embargo lo destruyes con la linea
set rs = nothing justo antes de ejecutar el procedimiento, lo ejecutas utilizando el método Execute y apegándote a que,
de haber una ejecución exitosa que regrese un cursor de datos, se cree implícitamente un objeto RecordSet, en este caso no sucedió así, ese SP no generó un recordSet y no se creó un objeto, por eso mismo el método .EOF hace tronar el programa.
Yo revisaría ese procedimiento almacenado y cambiaría la escritura de la página para hacerlo más claro. Puedes validar si se creo un objeto con la instrucción
IsObject antes de tratar de invocarlo.
saludos