Textdatei in Excel importieren mit VBA
Schritt-für-Schritt-Anleitung
Um eine Textdatei in Excel zu importieren und sicherzustellen, dass numerische Werte korrekt als solche interpretiert werden, kannst Du den folgenden VBA-Code verwenden. Dieser Code berücksichtigt die Trennung der Werte durch das Pipe-Symbol (|) und konvertiert die Werte vor dem Einfügen in die Excel-Zellen.
Sub TextImport()
Dim lngRow As Long, lngCol As Long
Dim sFile As String, sTxt As String
Dim vntTmp As Variant, vntOut() As Variant
Dim lngIndex As Long
sFile = Range("P1").Value
If Dir(sFile) = "" Then
Beep
MsgBox "Datei wurde nicht gefunden!"
Exit Sub
End If
lngRow = 1
lngCol = 1
Open sFile For Input As #1
Do Until EOF(1)
Line Input #1, sTxt
vntTmp = Split(sTxt, "|")
ReDim vntOut(1 To 1, 1 To UBound(vntTmp) + 1)
For lngIndex = 0 To UBound(vntTmp)
If IsDate(vntTmp(lngIndex)) And InStr(1, vntTmp(lngIndex), ",") = 0 Then
vntOut(1, lngIndex + 1) = CDbl(CDate(vntTmp(lngIndex)))
ElseIf IsNumeric(vntTmp(lngIndex)) Then
vntOut(1, lngIndex + 1) = CDbl(vntTmp(lngIndex))
Else
vntOut(1, lngIndex + 1) = vntTmp(lngIndex)
End If
Next lngIndex
Cells(lngRow, lngCol).Resize(1, UBound(vntOut, 2)) = vntOut
lngRow = lngRow + 1
Loop
Close #1
End Sub
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode besteht darin, die integrierte Importfunktion von Excel zu nutzen:
- Öffne Excel und gehe zu
Daten.
- Wähle
Daten abrufen und dann Aus Text/CSV.
- Wähle die gewünschte Textdatei aus und folge den Anweisungen im Dialogfeld.
- Achte darauf, die richtigen Trennzeichen auszuwählen.
Praktische Beispiele
Angenommen, Du hast eine Textdatei mit folgendem Inhalt:
abc|KDNR|1,5|100|...
def|KDNR||50|...
Mit dem oben angegebenen VBA-Code wird dieser Inhalt in die Zellen von Excel importiert, wobei 1,5 korrekt als numerischer Wert interpretiert wird.
Tipps für Profis
- Nutze die
Application.ScreenUpdating und Application.Calculation-Einstellungen, um die Performance beim Import großer Datenmengen zu verbessern.
- Speichere regelmäßig Deine Arbeit und teste den Code in einer Kopie Deiner Excel-Datei, um Datenverlust zu vermeiden.
- Verwende
Debug.Print, um die Werte während des Imports zu überprüfen, falls Du auf Probleme stößt.
FAQ: Häufige Fragen
1. Wie kann ich beim Import auch Datumswerte korrekt behandeln?
Um Datumswerte richtig zu importieren, kannst Du die IsDate-Funktion im Importcode verwenden, wie im obenstehenden Beispiel.
2. Was mache ich, wenn die Textdatei sehr groß ist?
Bei sehr großen Textdateien kann es hilfreich sein, den Import in Batches durchzuführen oder die Excel-Einstellungen für die Berechnung und Bildschirmaktualisierung temporär zu deaktivieren, um die Performance zu verbessern.