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