VBA Tipp: Eigenen Textexport schreiben

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich bin mit dem eingebauten Textexport (Docmd.TransferText) und der umständlichen Anpassung von Trennzeichen und Feldbegrenzungszeichen in der Exportspezifikation oder schema.ini-Datei unzufrieden und brauche eine flexiblere Lösung.

Lösung

Für einen Textexport mit Begrenzungszeichen sieht die Lösung so aus:

Public Function ExportDelim(SQL As String, _
                            FileName As String, _
                            Optional HasFieldNames As Boolean = True, _
                            Optional Delim As String = ";", _
                            Optional Quote As String = """")
 
   'Quelle: http://www.dbwiki.net/
 
   Dim fNum As Long
   Dim buf  As String
   Dim rs   As DAO.Recordset
   Dim fld  As DAO.Field
 
   Set rs = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot, dbForwardOnly)
 
   fNum = FreeFile()
   Open FileName For Output As fNum
 
   If Not rs.EOF And HasFieldNames Then
      buf = vbNullString
 
      For Each fld In rs.Fields
         buf = buf & Delim & Quote & fld.Name & Quote
      Next
 
      Print #fNum, Mid$(buf, Len(Delim) + 1)
   End If
 
   Do Until rs.EOF
      buf = vbNullString
 
      For Each fld In rs.Fields
         buf = buf & Delim & Quote & fld.value & Quote
      Next
 
      Print #fNum, Mid$(buf, Len(Delim) + 1)
 
      rs.MoveNext
   Loop
 
   Close fNum
   rs.Close
End Function

Aufruf

   ExportDelim "SELECT * FROM EineTabelle", "C:\Temp\Test.txt"


Wiki hinweis.png

Anmerkung: Diese Funktion ist nicht auf Geschwindigkeit optimiert, DoCmd.TransferText ist meist wohl um einiges schneller.


Wiki faq.png FAQ: Dieser Artikel gehört zu den "Häufig gestellten Fragen" (FAQ). Die Seite Access-FAQ bietet eine Übersicht aller FAQ-Artikel.