ich versuche eine Textdatei zeilenweise zu lesen,
Line Input #1, Zeile
weist aber der variablen Zeile auf einmal die ganze Datei zu.
Hat jemand eine Idee warum, bzw. was man dagegen machen kann?
Ich bedanke mich in Voraus.
Freundliche Grüsse
Ioannis
Sub DatTest()
Open "D:\MyDatei.txt" For Binary As #1
MyString = Input(LOF(1), #1)
CLOSE #1
MyString = Replace(MyString, Chr$(10), Chr$(13)&CHR$(10))
Open "D:\MyDatei.txt" For Output As #1
Write #1, MyString
Close
End Sub
viele Grüße
Karl-Heinz Voltmann
Option Explicit
Sub Lese_TxT_Datei()
Dim strText As String
Dim lngFn As Long, AnZZ As Long, A As Long
Dim strPathAndFileName As String
Dim vntA As Variant
strPathAndFileName = "C:\TextTXT\50919.txt" 'Pfad zur Datei
lngFn = FreeFile
Open strPathAndFileName For Binary As lngFn 'öffne zum lesen
strText = Space(LOF(lngFn))
Get lngFn, 1, strText 'lese komplette Datei
Close lngFn
AnZZ = CountChar(strText, Chr(10)) 'Zähle Zeile Trennzeichen
vntA = Split(strText, Chr(10)) 'Text trennen
For A = 0 To AnZZ
Cells(A + 1, 1) = vntA(A) 'einzelne Zeilen schreiben
Next A
Erase vntA 'Speicher freigeben
End Sub
Function CountChar(ByVal SourceString As String, ByVal strChar As String) As Long
CountChar = Len(SourceString) - Len(Replace(SourceString, strChar, ""))
End Function
Gruß
Tino
Sub FileLesen()
Dim MeineTxtDatei As String
MeineTxtDatei = "C:\TextTXT\50919.txt" 'Pfad zur Datei
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & MeineTxtDatei _
, Destination:=Range("A1"))
.Refresh BackgroundQuery:=False
End With
Application.ScreenUpdating = True
End Sub
Gruß
Tino
Um eine Textdatei zeilenweise in Excel VBA einzulesen, kannst Du folgende Schritte befolgen:
Öffne den VBA-Editor:
ALT + F11 in Excel.Füge ein neues Modul hinzu:
VBAProject (DeinDateiname) und wähle Einfügen > Modul.Füge den folgenden Code ein:
Sub Lese_Texte_Datei()
Dim strText As String
Dim lngFn As Long
Dim AnZZ As Long
Dim A As Long
Dim vntA As Variant
' Pfad zur Textdatei
Dim strPathAndFileName As String
strPathAndFileName = "C:\TextTXT\DeineDatei.txt" ' Ändere den Pfad entsprechend
lngFn = FreeFile
Open strPathAndFileName For Input As lngFn ' Öffne die Datei zum Lesen
' Lese die Datei zeilenweise
While Not EOF(lngFn)
Line Input #lngFn, strText
' Hier kannst Du den Text verarbeiten, z.B. in eine Zelle schreiben
Cells(A + 1, 1).Value = strText
A = A + 1
Wend
Close lngFn ' Schließe die Datei
End Sub
Führe das Makro aus:
Ausführen > Sub/UserForm ausführen oder drücke F5.Fehler: Die Datei wird nicht korrekt gelesen
Lösung: Überprüfe den Zeilenabschluss in der Textdatei. Wenn die Datei nur LF (line feed) verwendet, könnte dies zu Problemen führen. Du kannst das mit folgendem Code beheben:
Sub Zeilenabschluss_Korrigieren()
Dim strText As String
Dim lngFn As Long
Dim MyString As String
lngFn = FreeFile
Open "C:\TextTXT\DeineDatei.txt" For Binary As lngFn
MyString = Input(LOF(lngFn), #lngFn)
Close lngFn
MyString = Replace(MyString, Chr(10), Chr(13) & Chr(10)) ' Ersetze LF mit CRLF
Open "C:\TextTXT\DeineDatei.txt" For Output As lngFn
Write #lngFn, MyString
Close lngFn
End Sub
Fehler: Die Datei wird als eine einzige Zeile gelesen
Wenn Du die Textdatei nicht zeilenweise lesen möchtest, gibt es schnellere Methoden, um den Inhalt zu importieren:
Sub Importiere_Textdatei()
Dim MeineTxtDatei As String
MeineTxtDatei = "C:\TextTXT\DeineDatei.txt" ' Pfad zur Datei
Application.ScreenUpdating = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & MeineTxtDatei, Destination:=Range("A1"))
.Refresh BackgroundQuery:=False
End With
Application.ScreenUpdating = True
End Sub
Hier sind einige Beispiele, wie Du Textdateien mit VBA einlesen kannst:
Einfaches Zeilenlesen:
Dim Zeile As String
Open "C:\TextTXT\DeineDatei.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Zeile
' Verarbeite die Zeile hier
Loop
Close #1
Zeilen in ein Array einlesen:
Dim DatenArray() As String
DatenArray = Split(strText, vbCrLf) ' Teilt den Text an den Zeilenumbrüchen
Split(): Damit kannst Du eine Textzeile in ein Array aufteilen, um einfacher auf die einzelnen Werte zuzugreifen.UBound(): Damit kannst Du die Anzahl der Elemente im Array ermitteln, was den Code effizienter macht.1. Wie kann ich eine Textdatei im richtigen Format speichern?
Du kannst eine Textdatei mit dem Editor oder Wordpad öffnen und dann im richtigen Format (z.B. ANSI) speichern.
2. Was mache ich, wenn die Datei nicht geöffnet werden kann?
Überprüfe den Dateipfad und stelle sicher, dass Du die notwendigen Berechtigungen hast, um die Datei zu lesen.
3. Wie kann ich mit VBA eine CSV-Datei zeilenweise einlesen?
Der Code ist ähnlich wie bei einer Textdatei. Stelle sicher, dass Du die richtige Trennzeichen verwendest.
4. Gibt es Unterschiede beim Einlesen von TXT und CSV-Dateien?
Ja, CSV-Dateien können Kommas oder andere Trennzeichen enthalten. Stelle sicher, dass Du die Trennzeichen im Code entsprechend anpasst.