Come esportare in un file delimitato con Microsoft Access

Mi hanno chiesto come esportare in un file delimitato con Microsoft Access. Come sempre, poche istruzioni VBA e ho aggiunto alla mia cassetta degli attrezzi uno strumento molto utile.

Il codice consente di scegliere il delimitatore e di impostare facilmente che cosa esportare: possiamo esportare una tabella intera, una query, oppure scrivere una istruzione generata dinamicamente al momento dell’esecuzione della procedura.

In primo luogo è necessario aggiungere un riferimento a Microsoft Scripting Runtime:

microsoft_scripting_runtime

Ora in un modulo scriviamo:

Sub sExportToFile()
' ! per il funzionamento della procedura, è necessario aggiungere un riferimento a Microsoft Scripting Runtime
Dim rs As DAO.Recordset
Dim fld As Field
Dim strRiga As String
Dim fs As FileSystemObject
Dim ts As TextStream
Set fs = New FileSystemObject
Set ts = fs.CreateTextFile("D:\testfile.csv", True) ' creo il file vuoto. con il parametro True, se il file esiste già, lo sovrascrivo
 ' senza chiedere conferma all'utente
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Order_Details") ' carico nel recordset i dati che voglio esportare
Do While Not rs.EOF ' finché ci sono record
 strRiga = "" ' all'inizio del Do-Loop svuoto la variabile, altrimenti al secondo record conterrebbe tutta la prima riga
For Each fld In rs.Fields ' per ogni campo presente nel recordset
 strRiga = strRiga & ";" & fld ' concateno il delimitatore e il valore del campo
 Next
 ' quando sono finiti tutti i campi e ho concatenato i valori, devo togliere il delimitatore iniziale
 ' perché avrò una stringa tipo: ;1;12/03/2023;Tommassini;Luigino
 strRiga = Mid(strRiga, 2) ' con Mid tengo i dati a partire dal secondo carattere fino all'ultimo: non è necessartio specificare quanti
 ts.WriteLine strRiga ' ora scrivo la variabile come una nuova riga nel file
 rs.MoveNext ' passo al record successivo
Loop
End Sub

Nel codice ho scelto come delimitatore il punto e virgola, ma potrei scegliere un altro delimitatore, per esempio il pipe, la barra verticale | spesso utilizzata perché è piuttosto raro che sia presente nei dati da esportare.