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, _
  Optional FName As String = "C:\Temp\Temp.txt", _
  Optional HasFieldNames As Boolean = True, _
  Optional Delim As String = ";", Optional Quote As String = """")
 
Dim C As Long, Tmp As String, DB As DAO.Database
Dim RS As DAO.Recordset, Fld As DAO.Field
  Set DB = CurrentDb
  Set RS = DB.OpenRecordset(SQL, dbOpenSnapshot, dbForwardOnly)
  C = FreeFile
  Open FName For Output As #C
  If Not RS.EOF And HasFieldNames Then
    Tmp = ""
    For Each Fld In RS.Fields
      Tmp = Tmp & Delim & Quote & Fld.Name & Quote
    Next Fld
    Print #C, Mid(Tmp, Len(Delim) + 1)
  End If
  Do While Not RS.EOF
    Tmp = ""
    For Each Fld In RS.Fields
      Tmp = Tmp & Delim & Quote & Fld.Value & Quote
    Next Fld
    Print #C, Mid(Tmp, Len(Delim) + 1)
    RS.MoveNext
  Loop
  Close #C
  RS.Close
  DB.Close
End Function

Aufruf

ExportDelim "SELECT * FROM MeineTabelle", "C:\Test\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.