VBA Code für den Import von .txt Dateien in Excel
Schritt-für-Schritt-Anleitung
Um eine Textdatei in Excel zu importieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code durchsucht alle .txt-Dateien in einem angegebenen Ordner und importiert die relevanten Daten in die Excel-Vorlage.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das Modul ein:
Sub ImportTxtFiles()
Dim sFile As String, sPath As String
Dim sText As String, sTmp As String
Dim lRow As Long, iStart As Integer, iEnde As Integer, i As Integer
Dim arrStart, arrEnde
Application.ScreenUpdating = False
sPath = "C:\Dein\Pfad\" ' Ändere den Pfad zu Deinem Ordner
arrStart = Array("Merchant:", "Card/Acct #:", "ARN:", "Tran Amt:", "Pre-Arbitration?")
arrEnde = Array("Tran ID:", "Tran Type:", "Tran Amt:", "Acquirer:", "Days Given to Respond:")
sFile = Dir(sPath & "*.txt")
Do While sFile <> ""
sText = ""
lRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
Open sPath & sFile For Input As #1
Do While Not EOF(1)
Line Input #1, sTmp
sText = sText & sTmp & vbCr
Loop
Close #1
For i = 0 To UBound(arrStart)
iStart = InStr(sText, arrStart(i))
iEnde = InStr(sText, arrEnde(i))
If iStart > 0 And iEnde > 0 Then
Cells(lRow, i + 1) = Mid(sText, iStart + Len(arrStart(i)), iEnde - iStart - Len(arrStart(i)))
End If
Next i
Name sPath & sFile As sPath & "gelesen\" & sFile ' Datei verschieben
sFile = Dir
Loop
End Sub
- Ändere den Pfad im Code zu dem Ordner, in dem sich Deine .txt-Dateien befinden.
- Führe den Code aus, um die Daten aus den .txt-Dateien in Deine Excel-Vorlage zu importieren.
Häufige Fehler und Lösungen
-
Laufzeitfehler '53': Datei nicht gefunden: Überprüfe den angegebenen Pfad. Stelle sicher, dass die Dateien im korrekten Verzeichnis liegen.
-
Laufzeitfehler '5': Ungültiger Prozeduraufruf: Dies tritt auf, wenn der gesuchte Text nicht gefunden wird. Achte darauf, dass die Begriffe in arrStart
und arrEnde
korrekt sind.
-
Daten werden nicht richtig importiert: Stelle sicher, dass die Struktur der .txt-Dateien mit den Suchbegriffen im Code übereinstimmt.
Alternative Methoden
Wenn Du keine VBA verwenden möchtest, kannst Du auch die Textimportfunktion in Excel nutzen:
- Gehe zu
Daten
> Aus Text/CSV
.
- Wähle die .txt-Datei aus und folge dem Importassistenten.
- Wähle die Delimiter aus, die Deine Daten trennen (z.B. Komma oder Tabulator).
Diese Methode ist jedoch weniger flexibel als die Verwendung von VBA, insbesondere wenn es um die Verarbeitung mehrerer Dateien geht.
Praktische Beispiele
Hier sind einige Beispiele für die Anpassung des Codes, um spezifische Daten aus einer .txt Datei zu importieren:
- Wenn Du nur den Status aus der vierten Zeile importieren möchtest:
Cells(lRow, 1) = Left(sText, 7) ' Die ersten 7 Zeichen
- Um Daten zwischen bestimmten Schlüsselwörtern zu extrahieren:
iStart = InStr(sText, "Merchant:")
iEnde = InStr(sText, "Tran ID:")
Cells(lRow, 2) = Mid(sText, iStart + Len("Merchant:"), iEnde - iStart - Len("Merchant:"))
Diese Beispiele sind nützlich, wenn Du Daten aus einer Textdatei in Excel importieren und spezifisch filtern möchtest.
Tipps für Profis
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass der Code auch bei unerwarteten Problemen stabil bleibt.
On Error Resume Next
' Dein Code hier
On Error GoTo 0
-
Dynamische Pfade: Nutze Application.GetOpenFilename
für eine dynamische Auswahl des Ordners, anstatt einen festen Pfad zu verwenden.
-
Datenformatierung: Achte darauf, dass die importierten Daten in den richtigen Zellen formatiert sind (z.B. Zahlen als Zahlen und nicht als Text).
FAQ: Häufige Fragen
1. Wie kann ich mehrere .txt Dateien gleichzeitig importieren?
Der bereitgestellte VBA-Code importiert automatisch alle .txt Dateien im angegebenen Ordner.
2. Was mache ich, wenn die Struktur der .txt Datei variiert?
Du kannst die Suchbegriffe im Code anpassen, um die relevanten Informationen zu finden. Nutze InStr
und Mid
, um die Daten flexibel zu extrahieren.
3. Gibt es eine Möglichkeit, die importierten Daten automatisch zu speichern?
Ja, im Code wird die Datei nach dem Import in einen Unterordner "gelesen" verschoben. Du kannst den Code anpassen, um die Daten in eine neue Excel-Datei zu speichern.
4. Wie kann ich den Code anpassen, wenn ich nur bestimmte Daten importieren möchte?
Ändere die Arrays arrStart
und arrEnde
, um nur die gewünschten Daten zu erfassen.