Este é um problema comum causado por contagens de linhas sendo interpretadas como saída de um procedimento armazenado ao usar
ADODB
com SQL Server. Para evitar isso, lembre-se de definir
SET NOCOUNT ON;
em seu procedimento armazenado, isso impedirá o ADODB de retornar um conjunto de registros fechado ou se, por qualquer motivo, você não quiser fazer isso (não tenho certeza do porquê, pois você sempre pode usar
@@ROWCOUNT
para passar a contagem de linhas de volta), você pode usar 'Return the next recordset, which will be the result of the Stored Procedure, not
'the row count generated when SET NOCOUNT OFF (default).
Set rs = rs.NextRecordset()
que retorna o próximo
ADODB.Recordset
se o ADODB detectou um sendo retornado pelo procedimento armazenado (pode ser melhor verificar rs.State <> adStateClosed
ao lidar com vários objetos ADODB.Recordset).