Faccio un appunto sulla modalità di apertura del Recordset DAO:
Set rsQuery = dbs.OpenRecordset("QueryAvvisiScadenzeRCAnonIncassate", dbOpenDynaset)
Quando si apre un RS non destinato ad Edit, si apre in readonly ed in snapshot
expression.OpenRecordset (Name, Type, Options, LockEdit)
Type=dbOpenSnapshot
Options= dbReadOnly
Detto questo, non ho capito perchè usi quel codice che è lento, hai provato ad usare questo:
expression.TransferText (TransferType, SpecificationName, TableName, FileName, HasFieldNames, HTMLTableName, CodePage)
Dove puoi crearti un File SPEC, nel quale definisci il Separatore, se serve, in quanto di DEFAULT dovrebbe essere ";" che usi tu...
Se devi restringere i campi ti basta creare una Query TEMP che seleziona i campi.
Esempio se la Query Originale fosse questa e tu volessi esportare solo 2 campi...:
SELECT f1,f2,f3,f4 FROM T1 WHERE f1=xxx
basterebbe creare una Query così:
SELECT f1,f4 FROM QueryAvvisiScadenzeRCAnonIncassate
Quindi una QueryTMP:
Set qdfTemp = CurrentDb.CreateQueryDef("zzzTemp")
Set qdfTemp.SQL = "SELECT f1,f4 FROM QueryAvvisiScadenzeRCAnonIncassate"
DoCmd.TransferText acExportDelim, SeServeNomeFileSPEC , "zzzTemp", OutputPlace, True
DoCmd.DeleteObject acQuery, "zzzTemp"