Questo è un problema comune causato dal conteggio delle righe interpretato come output da una stored procedure quando si utilizza ADODB con SQL Server.
Per evitare ciò ricorda di impostare
SET NOCOUNT ON;
nella tua Stored Procedure questo impedirà ADODB di restituire un recordset chiuso, o se per qualsiasi motivo non vuoi farlo (non so perché puoi sempre usare @@ROWCOUNT per passare indietro il conteggio delle righe), puoi utilizzare
'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()
che restituisce il successivo ADODB.Recordset se ADODB ne ha rilevato uno restituito dalla stored procedure (potrebbe essere meglio controllare rs.State <> adStateClosed quando si tratta di più oggetti ADODB.Recordset).