Calma ... intanto cosi'

Do While Not rs.State = adStateClosed

non controlli affatto quando il recordset si conclude perche' non si chiude da solo.
Semmai ottieni una condizione di EOF che e' quella che devi testare

Do While Not rs.Eof

E poi, non devi usare alcun metodo di sorta ... dentro al ciclo hai a disposizione tutti i campi del record che ti servono, che so, ad esempio

rs.Fields("Nome").Value

e li scrivi semplicemente nel file. Per scrivere, puoi usare semplicemente la Open ... Print # ... senza il FileSystemObject ...

Piu' o meno cosi'

codice:
Open "File.csv" For Output As #1
Do While Not rs.State = adStateClosed
    Print #1, rs.Fields("Cognome").Value & "," & rs.Fields("Nome").Value
    rs.MoveNext
Loop
Close #1