[access vba] exporter sql vers fichier plat (csv, txt ou autre)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 308 fois - Téléchargée 23 fois

Contenu du snippet

La fonction sous Access mde n'est pas équivalente sous Access adp (projet sur base SQL SERVER) donc j'ai codé cette fonction simple qui crée un recordset à partir d'une requête, puis l'exporte dans un fichier plat avec séparateur ; ou autre (vbtab par exemple).
La requête SQL peut être toute simple (SELECT * FROM matable) ou bien hyper complexe dans le respect de la syntaxe SQL server (UNION, GROUP BY, HAVING, pas de transform, etc)

Source / Exemple :


' exportation d'une requête SQL ou table vers un fichier
' format csv avec séparateur optionnel
Public Function ExportCsv(SQL As String, File_name As String, Optional ByVal sep As _
String = ";", Optional ByVal Quote As String = "", Optional ByVal WithFields As Boolean = False) As Boolean
Dim line As String, i As Long
Dim rst As Recordset, fld As Field

On Error GoTo ExportCsv_Error

' connection pour un projet access ADP :
'Set rst = CurrentProject.Connection.Execute(SQL)
' connection pour un projet access MDB :
Set rst = CurrentDb.OpenRecordset(SQL)
Open File_name For Output As #1

If WithFields Then ' les noms de champ si demandé
    line = ""
    For Each fld In rst.Fields
        line = line & sep & Quote & fld.Name & Quote
    Next
    Print #1, Mid(line, Len(sep) + 1)
End If
    
Do Until rst.EOF
    line = ""
    For i = 0 To rst.Fields.Count - 1
        line = line & sep & Quote & Nz(rst(i).Value) & Quote
    Next i
    Print #1, Mid(line, Len(sep) + 1)
    rst.MoveNext
Loop
rst.Close
Close #1

ExportCsv = True
Exit Function

ExportCsv_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & _
        ") in Function ExportCsv of Module mdFunctions", vbCritical
End Function

Conclusion :


(Allez si on le plébiscite j'ajouterais en option les noms des champs dans la 1ere ligne du fichier :D )

ça c'est fait! l'argument WithFields permet de définir si vous voulez les noms de champs en 1ere ligne.
également dispo: l'option Quote qui permet d'entourer tous les champs de guillements "'" ou chr(34) pour le "

ultime amélioration à apporter, éventuellement, protéger les caracteres sep et quote dans les valeurs de champs au cas ou...

A voir également

Ajouter un commentaire Commentaires
glgfromys Messages postés 1 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 19 juillet 2012
19 juil. 2012 à 12:12
Excellent!
cyberdive Messages postés 1 Date d'inscription mercredi 6 mars 2002 Statut Membre Dernière intervention 15 mars 2011
15 mars 2011 à 17:59
Génial, merci ;-)
denbil Messages postés 3 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 25 septembre 2009
25 sept. 2009 à 22:34
Voila ma note 20/20 !! ;-))
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014
25 sept. 2009 à 22:21
ha merci, c'est chouette ;) hé ! faut me mettre une note si ça vous a plus (seulement si ça vous a plus bien sur!)
denbil Messages postés 3 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 25 septembre 2009
25 sept. 2009 à 20:15
Alors là merci pour ce code !!!
je cherchais la chose depuis des mois et voila le code qui tourne à la perfection !!!
Merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.