Datenmanagement: Wie kann ich Daten aus Access exportieren oder importieren?

Export. Import.
Klingt erstmal langweilig. Aber genau da kracht’s oft.
Zu viele manuelle Schritte, komische Formate, kaputte Umlaute.

Ich zeig Dir hier, wie Du in Access sauber, automatisiert und kontrolliert Daten rein- und rausbekommst.
Ohne Klick-Orgie. Mit VBA. Und mit klarer Struktur.

Warum das Thema wichtig ist

Access-Projekte stehen selten allein.
Du musst oft:

  • Daten mit anderen Systemen austauschen
  • Exporte fĂŒr Kunden, Steuerberater oder Logistik bauen
  • externe Datenquellen einlesen und prĂŒfen

Das geht – aber nur sauber, wenn Du es per Code steuerst.

Exportvarianten: Was geht raus?

Access kann nativ:

  • CSV
  • Excel
  • Textdatei
  • XML (selten nĂŒtzlich)
  • PDF (fĂŒr Berichte)

Export als CSV per VBA

Public Sub ExportCSV()
    DoCmd.TransferText _
        TransferType:=acExportDelim, _
        TableName:="qryKundenExport", _
        FileName:="C:\Export\Kunden.csv", _
        HasFieldNames:=True
End Sub

Wichtig:
Access nimmt das in den regionalen Formateinstellungen (Trennzeichen, Dezimalzeichen).
Du willst Semikolon statt Komma? Dann nutz eigenes Format.

Export als Excel-Datei

Public Sub ExportExcel()
    DoCmd.TransferSpreadsheet _
        TransferType:=acExport, _
        SpreadsheetType:=acSpreadsheetTypeExcel12Xml, _
        TableName:="qryMonatsbericht", _
        FileName:="C:\Export\Monat.xlsx", _
        HasFieldNames:=True
End Sub

Geht sauber. Achte auf Dateinamen. Access hÀngt nichts automatisch an.

Export als PDF (Bericht)

Public Sub ExportPDF()
    DoCmd.OutputTo _
        ObjectType:=acOutputReport, _
        ObjectName:="rptRechnung", _
        OutputFormat:=acFormatPDF, _
        OutputFile:="C:\Export\Rechnung_4711.pdf"
End Sub

PDFs sind gut fĂŒr Kunden.
FĂŒr Datenverarbeitung lieber CSV oder XLSX.

Importvarianten: Was kommt rein?

Access kann auch hier:

  • CSV / Textdateien
  • Excel
  • verknĂŒpfte Datenquellen (z. B. SQL, SharePoint)
  • XML (kommt selten vor)

Import einer CSV-Datei per VBA

Public Sub ImportCSV()
    DoCmd.TransferText _
        TransferType:=acImportDelim, _
        TableName:="tmp_ImportKunden", _
        FileName:="C:\Import\Kunden.csv", _
        HasFieldNames:=True
End Sub

Ich importiere fast immer in eine temporÀre Tabelle (tmp_...).
Danach folgt PrĂŒfung, Transformation, Übergabe an produktive Tabellen.

Import aus Excel (z. B. Preisliste)

Public Sub ImportExcel()
    DoCmd.TransferSpreadsheet _
        TransferType:=acImport, _
        SpreadsheetType:=acSpreadsheetTypeExcel12Xml, _
        TableName:="tmp_Preise", _
        FileName:="C:\Import\Preisliste.xlsx", _
        HasFieldNames:=True
End Sub

Wichtig:
Die Excel-Datei muss geschlossen sein. Sonst: Fehler 3011.

Validierung nach dem Import

Daten prĂŒfen, bevor Du sie ins System lĂ€sst:

Public Sub ValidierungImport()
    Dim fehler As Long
    fehler = DCount("*", "tmp_Preise", "Preis <= 0 OR Artikelnummer Is Null")

    If fehler > 0 Then
        MsgBox fehler & " fehlerhafte DatensÀtze. Import wird abgebrochen.", vbCritical
        Exit Sub
    End If

    ' Daten weiterverarbeiten
End Sub

Ziel: Robustheit.
Lieber ein klarer Abbruch als stiller Murks.

DatenĂŒbergabe von tmp_ nach Live

CurrentDb.Execute "INSERT INTO tblPreise (Artikelnummer, Preis) SELECT Artikelnummer, Preis FROM tmp_Preise", dbFailOnError

Danach:

CurrentDb.Execute "DELETE FROM tmp_Preise"

So bleibt der Import sauber getrennt vom System.

SonderfÀlle

Export mit eigenem Zeichensatz (UTF-8)

Access kann kein echtes UTF-8 per TransferText.
Lösung: Umweg ĂŒber ADODB.Stream oder FileSystemObject.

Public Sub SchreibeUTF8()
    Dim f As Object
    Set f = CreateObject("Scripting.FileSystemObject")
    Dim stream As Object
    Set stream = CreateObject("ADODB.Stream")

    stream.Charset = "utf-8"
    stream.Open
    stream.WriteText "Text;mit;Umlauten;Ă€Ă¶ĂŒ"
    stream.SaveToFile "C:\Export\utf8.csv", 2
    stream.Close
End Sub

FĂŒr echte internationale Exporte sinnvoll.

Mehrere Dateien nacheinander verarbeiten

Schleife durch Ordner – z. B. fĂŒr Massendatenimport:

Public Sub ImportAlleCSVs()
    Dim fso As Object, folder As Object, file As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\Import")

    For Each file In folder.Files
        If InStr(file.Name, ".csv") > 0 Then
            DoCmd.TransferText acImportDelim, , "tmp_Import", file.Path, True
            ' Daten weiterverarbeiten
        End If
    Next
End Sub

So holst Du Dir auch 100 Dateien in einem Rutsch rein.

Fazit

Daten rein, Daten raus – das ist Alltag.
Aber wenn Du’s automatisierst, wird’s wartbar. Und sicher. Und schnell.

Merk Dir:

  • Immer mit temporĂ€ren Tabellen arbeiten
  • Importe validieren
  • Exporte klar benennen und versionieren
  • VBA statt Mausklicks – fĂŒr Wiederholbarkeit

Kategorien:

Keine Antworten

Schreibe einen Kommentar

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