Wenn der Export nicht mehr nerven soll

Du kennst das Spiel.
Access-Export nach Excel – mit Umwegen.
CSV-Export – ohne Zeichensatzwahl, ohne Steuerung.
Und danach: Formatieren per Hand, Spalten löschen, Sonderzeichen korrigieren.

Geht besser.
Geht sauberer.
Geht automatisiert.

Varianten für sauberen Datenexport

ZielMethode
Excel mit FormatierungExcel-Objektmodell (VBA)
Excel ohne FormatierungDoCmd.TransferSpreadsheet
CSV mit SteuerungFileSystemObject + VBA
SQL → CSVbcp oder FORMAT() in T-SQL

Export nach Excel: einfach und schnell

Standardmethode in Access:

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
                          "qryKundenExport", _
                          "C:\Temp\Kunden.xlsx", _
                          True

Was Du bekommst:

  • Reine Daten
  • Spaltenüberschriften
  • Keine Formatierung

Tipp: Nutze vorab eine gezielte Abfrage mit sprechenden Spaltennamen.
Dann musst Du später nichts anfassen.

Export mit Formatierung: Excel-Objektmodell

Wenn das Layout stimmen soll:

Sub ExportNachExcelFormatiert()

    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlWS As Object
    Dim rs As DAO.Recordset
    Dim i As Integer
    Dim Zeile As Long

    Set rs = CurrentDb.OpenRecordset("qryKundenExport", dbOpenSnapshot)

    Set xlApp = CreateObject("Excel.Application")
    Set xlWB = xlApp.Workbooks.Add
    Set xlWS = xlWB.Sheets(1)

    ' Überschriften
    For i = 0 To rs.Fields.Count - 1
        xlWS.Cells(1, i + 1).Value = rs.Fields(i).Name
        xlWS.Cells(1, i + 1).Font.Bold = True
    Next i

    Zeile = 2
    Do While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            xlWS.Cells(Zeile, i + 1).Value = rs.Fields(i).Value
        Next i
        Zeile = Zeile + 1
        rs.MoveNext
    Loop

    xlWS.Columns.AutoFit
    xlWB.SaveAs "C:\Temp\KundenFormatiert.xlsx"
    xlWB.Close False
    xlApp.Quit

    Set xlWS = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing
    rs.Close

End Sub

Kostet etwas mehr Code.
Bringt aber ein Excel, das Du direkt verschicken kannst.

CSV-Export mit voller Kontrolle

Access kann CSV – aber ohne Zeichensatzwahl.
Wenn Du mehr willst, nimm VBA und FileSystemObject.

Beispiel:

Sub ExportNachCSV()

    Dim rs As DAO.Recordset
    Dim fso As Object
    Dim txt As Object
    Dim i As Integer
    Dim line As String

    Set rs = CurrentDb.OpenRecordset("qryKundenExport", dbOpenSnapshot)
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txt = fso.CreateTextFile("C:\Temp\Kunden.csv", True, True) ' True = Unicode

    ' Kopfzeile
    For i = 0 To rs.Fields.Count - 1
        line = line & """" & rs.Fields(i).Name & """;"
    Next i
    txt.WriteLine Left(line, Len(line) - 1)

    ' Datenzeilen
    Do While Not rs.EOF
        line = ""
        For i = 0 To rs.Fields.Count - 1
            line = line & """" & rs.Fields(i).Value & """;"
        Next i
        txt.WriteLine Left(line, Len(line) - 1)
        rs.MoveNext
    Loop

    txt.Close
    rs.Close

End Sub

Damit steuerst Du Zeichensatz, Trenner und Format komplett selbst.

SQL Server → CSV per T-SQL

Auch per SQL kannst Du saubere CSV erzeugen.
Ideal für geplante Exporte.

Beispiel:

SELECT 
    CONCAT_WS(';', 
        '"' + Name + '"', 
        FORMAT(Geburtstag, 'dd.MM.yyyy'), 
        FORMAT(Umsatz, '#,##0.00')
    ) AS CSVZeile
FROM dbo.Kunden

Oder ganz technisch mit bcp-Tool:

bcp "SELECT * FROM dbo.Kunden" queryout Kunden.csv -c -t; -T -S meinserver

Damit läuft der Export direkt vom Server – ohne Access.

Format-Tipps für mehr Klarheit

  • Trenne sauber mit Semikolon ;, nicht Komma (wegen Dezimaltrennzeichen)
  • Nutze " um Textfelder
  • Konvertiere NULL-Werte vorher zu leeren Strings
  • Speichere im UTF-8 oder UTF-16 für Umlaut-Kompatibilität

Mein Fazit

Export muss nicht hakelig sein.
Du kannst Dir mit wenigen Zeilen VBA saubere Dateien bauen – automatisiert, robust, formatiert.
Und wenn’s aus SQL kommen soll: geht auch.

Wenn Du willst, setze ich Dir einen Export zusammen, der ohne Klick jeden Abend läuft.
Dann bekommst Du saubere Daten – norddeutsch still und zuverlässig.

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert