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
Keine Antworten