Prima di tutt attenzione ad usare Recordcount per controllare il numero dopo l'apertura... perché quella proprietà non è aggiornata finché non si forza lo scorrimento... d solito si mette prima un movelast e movefirst ma solo dopo aver controllato EOF AND BOF che siano falsi...
Set rs=.....
If not (rs.eof and rs.bof) the
Rs.movelast
Rs.movefirst
' ora la proprietà Recordcount è aggiornata, ma se ci guardi
' non serve più...
....
End if
Ciò detto devi implementare un contatore che incrementi ad ogni ciclo, quando arrivi a 20 invii la mail resetti la stringa email ed il contatore e riparti...
Metti un doevents nel ciclo.
P.s.attenzione anche al controllo della presenza della mail... se il campo non è NULL ma NULLSTRING va in errore... e sono 2 condizioni possibili e diverse.