Automatisierter Export von Abfrageergebnissen in Excel mit Formatierung

Warum der Standard-Export nicht reicht

Du kannst eine Access-Abfrage per Mausklick nach Excel exportieren.
Aber: Formatierung? Fehlanzeige.
Zahlenformate, Farben, Kopfzeile fett – alles musst Du nacharbeiten.

Wenn das regelmĂ€ĂŸig passiert, lohnt sich ein Export mit VBA.
Dann bekommst Du saubere Ergebnisse. Ohne Nacharbeit. Automatisch.

Ziel: Access-Abfrage nach Excel – fertig formatiert

Was wir brauchen:

  • Exportierte Daten aus einer gespeicherten Abfrage
  • Excel-Workbook mit eigener Formatierung
  • Kopfzeile fett
  • Spaltenbreiten automatisch angepasst
  • Zahlen als WĂ€hrung formatiert (wo sinnvoll)

Beispielcode: Export mit Formatierung

Sub ExportMitFormatierung()

    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlWS As Object
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim ZielPfad As String
    Dim Zeile As Long
    Dim i As Integer

    Set db = CurrentDb
    Set rs = db.OpenRecordset("qryUmsatzProKunde", dbOpenSnapshot)

    If rs.EOF Then
        MsgBox "Keine Daten gefunden.", vbExclamation
        Exit Sub
    End If

    ZielPfad = CurrentProject.Path & "\UmsatzExport_" & Format(Now, "yyyymmdd_hhnnss") & ".xlsx"

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False

    Set xlWB = xlApp.Workbooks.Add
    Set xlWS = xlWB.Worksheets(1)

    ' Überschriften schreiben
    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
        xlWS.Cells(1, i + 1).Interior.Color = RGB(200, 200, 200)
    Next i

    Zeile = 2

    ' Daten schreiben
    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

    ' Spalten formatieren
    xlWS.Columns.AutoFit

    ' Beispiel: Spalte 3 (Umsatz) als WĂ€hrung
    xlWS.Columns(3).NumberFormat = "#,##0.00 €"

    ' Datei speichern
    xlWB.SaveAs ZielPfad
    xlWB.Close False
    xlApp.Quit

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

    MsgBox "Export abgeschlossen: " & ZielPfad, vbInformation

End Sub

Was Du anpassen kannst

  • Abfragenamen → "qryUmsatzProKunde"
  • Formatierung → z. B. Farben, SchriftgrĂ¶ĂŸen, Rahmen
  • Spaltenformatierung → ĂŒber xlWS.Columns(X).NumberFormat

Tipp: Werte nicht hart codieren – baue Dir ggf. ein Mapping pro Feldtyp.

Fehlerbehandlung nicht vergessen

FĂŒr produktiven Einsatz solltest Du On Error GoTo ergĂ€nzen.

On Error GoTo Fehler

' [Code hier]

Exit Sub

Fehler:
    MsgBox "Fehler beim Export: " & Err.Description, vbCritical
    On Error Resume Next
    xlApp.Quit

So ĂŒberlebt der Nutzer auch fehlerhafte Exporte.

Was das bringt

  • Export mit einem Klick
  • Immer gleiches Format
  • Kein Nachbessern in Excel
  • Saubere Automatisierung fĂŒr Berichte, Listen, Monatsauswertungen

Wenn Du magst, helfe ich Dir, das Skript auf Deine Struktur anzupassen.
Dann lĂ€uft das auch bei Dir – norddeutsch klar und zuverlĂ€ssig.

Keine Antworten

Schreibe einen Kommentar

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