Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Txt-Datei mit Trennzeichen einlesen?

Forumthread: Txt-Datei mit Trennzeichen einlesen?

Txt-Datei mit Trennzeichen einlesen?
23.11.2004 20:04:59
Andi
Hallo!
Habe schon ins Archiv geschaut, aber nichts passendes gefunden (obwohl da ja viel steht)
Ich möchte eine txt-Datei (Vorname Name Geburtsjahr…) in das Tabellenblatt „Tabelle2“ einlesen. Trennzeichen ist ein Leerzeichen.
Die Textdatei soll bis zum Ende eingelesen werden und praktisch so in Excel übertragen werden, wobei die Werte (Vorname, Name, Geb...) jeweils in eine eigene Spalte in "Tabelle2" geschrieben werden sollen.
Hat jemand eine passende Lösung?
Vielen Dank
Andi
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Txt-Datei mit Trennzeichen einlesen?
23.11.2004 20:13:10
Jan
Hi Andi,
Wenn Excel 2000 besitzt und alle Komponenten installiert hast, dann wird beim Öffnen einer Textdatei mit den Endungen *.prn, *.txt und *.csv automatisch erkannt und ein Textkonventierungs-Assistent gestartet. Hier brauchst Du nur die entsprechenden Trennzeichen auswählen und einstellen. Alles andere macht Excel. Manchmal sind auch mehrere Schritte nötig.
Dann kannst Du auch über Menü Daten - Text in Spalten diesen Assistennten starten.

Jan
Anzeige
AW: Txt-Datei mit Trennzeichen einlesen?
23.11.2004 20:18:56
Andi
Danke, aber so habe ich es bisher immer gemacht.
Hatte wohl vergessen zu schreiben, dass ich das ganze mit VBA machen möchte, sorry ;-)
Also bräuchte ich ein kleines VBA-Skript.
AW: Txt-Datei mit Trennzeichen einlesen?
23.11.2004 20:35:29
Udo
Wirf mal den Makrorekorder an.
Udo
AW: Txt-Datei mit Trennzeichen einlesen?
23.11.2004 21:00:32
Andi
Habe es mal mit dem Makrorekorder probiert.
Leider öffnet Excel immer ein neues Sheet (nämlich mit dem Namen der Datei)?! Kriegt man das auch so hin, dass Excel die Daten in z.b. "Tabelle2" schreibt?

Sub Makro1()
ChDir "C:\"
Workbooks.OpenText Filename:="C:\1.txt", Origin:=xlMSDOS, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter _
:=True, Tab:=False, Semicolon:=False, Comma:=False, Space:=True, _
Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), _
Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), _
Array(12, 1), Array(13, 1)), TrailingMinusNumbers:=True
End Sub


Viele Grüße
Andi
Anzeige
AW: Txt-Datei mit Trennzeichen einlesen?
23.11.2004 21:39:27
Karl-Otto Reimann
Hallo Andi
Versuch' das hier:

Sub Test()
Dim sWord1 As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim anzfound As Integer
Dim intRow As Integer
Dim rng As Range
Dim varCol As Variant
Dim az As Range
Dim r As Range
Sheets("Tabelle1").Select
Sheets("Tabelle1").Rows("1:20000").ClearContents
'Application.ScreenUpdating = False
'Application.Calculation = xlManual
anzfound = 0
'''Pfad anpassen
sSearchPath = "c:\vt\boerse\TestDat.txt"
sPath = "c:\vt\boerse\"
FileName = Dir(sSearchPath)
If FileName <> "" Then
Do While FileName <> ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
''' hier wird entweder ein " C " oder ein " P " gesucht
If InStr(1, InputData, " C ") Or InStr(1, InputData, " P ") > 0 Then
''' alternativ geht aber auch eine Leerstelle " "
''' hier wird ein "," gesucht
If InStr(1, InputData, ",") > 0 Then
anzfound = anzfound + 1
Sheets("Tabelle1").Cells(anzfound + 1, 7) = FileName
Sheets("Tabelle1").Cells(anzfound + 1, 1) = InputData
End If
Loop
Close #1
FileName = Dir
Application.StatusBar = "TestDat:  " & anzfound & "  Datensätze gefunden"
Loop
End If
End Sub


Grüße
KO
Anzeige
AW: Skript Funktioniert nicht
23.11.2004 21:45:09
Andi
Hallo Karl-Otto!
Bei deinem Skript bekomme ich immer eine Fehlermeldung in Bezug auf Loop... ?!
Hat mir leider nicht weitergeholfen.
AW: Skript Funktioniert nicht
23.11.2004 22:00:47
Karl-Otto Reimann
Hier das Original (Range, Sheets, sSearchPath, sPath mußt Du anpassen):

Sub ZEITEN()
Range("A4:B1500").ClearContents
With Application
.Calculation = xlManual
.ScreenUpdating = False
End With
Dim sWord1 As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim anzfound As Integer
Dim sWord2 As String
Dim intRow As Integer
anzfound = 0
sSearchPath = "c:\vt\boerse\*.txt"
sPath = "c:\vt\boerse\"
FileName = Dir(sSearchPath)
If FileName <> "" Then
Do While FileName <> ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If InStr(1, InputData, "Uhr") > 0 Then
anzfound = anzfound + 1
Sheets("ZEIT").Cells(anzfound + 3, 1) = FileName
Sheets("ZEIT").Cells(anzfound + 3, 3) = InputData
End If
Loop
Close #1
FileName = Dir
Application.StatusBar = "Status: " & anzfound
Loop
End If
End Sub

Anzeige
AW: Skript Funktioniert nicht
23.11.2004 22:08:29
Ralf (Schwabenland)
Hallo Andi,
hier mal eine Beispieldatei:
https://www.herber.de/bbs/user/13837.xls
mit getesteter txt-Datei

Die Datei https://www.herber.de/bbs/user/13838.txt wurde aus Datenschutzgründen gelöscht

Die txt-Datei musst du in Datei.txt umbenennen und in einen Ordner Namens C:\WUTemp bei dir einstellen. Oder du passt den Code in meinem Beispiel an.
Gruß
Ralf (Schwabenland)
Anzeige
AW: Skript Funktioniert nicht
23.11.2004 22:36:35
Karl-Otto Reimann
In Tabelle2 erscheint in A4:A8 (gesucht: Leerstelle) und Dein Text und in B4:B8 die Herkunft (Herber-Nummer ):


Sub TESSSST()
With Application
.Calculation = xlManual
.ScreenUpdating = False
End With
Dim sWord1 As String, sPath As String, sSearchPath As String, FileName As String, InputData
Dim anzfound As Integer
Dim sWord2 As String
Dim intRow As Integer
anzfound = 0
sSearchPath = "c:\WUTemp\13838.txt"
sPath = "c:\WUTemp\"
FileName = Dir(sSearchPath)
If FileName <> "" Then
Do While FileName <> ""
Open sPath & FileName For Input As #1
Do While Not EOF(1)
Line Input #1, InputData
If InStr(1, InputData, " ") > 0 Then
anzfound = anzfound + 1
Sheets("Tabelle2").Cells(anzfound + 3, 2) = FileName
Sheets("Tabelle2").Cells(anzfound + 3, 1) = InputData
End If
Loop
Close #1
FileName = Dir
Application.StatusBar = "Status: " & anzfound
Loop
End If
End Sub

Anzeige
AW: super! Danke!
23.11.2004 23:21:26
Andi
Danke! Funktioniert!
Anderes Sheet?
24.11.2004 20:30:44
Andi
Hallo Ralf!
Wie kann ich denn bei dem skript erreichen, dass die Daten aus der txt-Datei nicht ins aktuelle Sheet geschrieben werden, sondern z.B. ins sheet "Tabelle2"?
Ganz vielen Dank
AW: Anderes Sheet?
24.11.2004 22:20:29
Ralf (Schwabenland)
Hallo Andi,
hat sich erledigt. Hast ja Antwort in einem neuen Thread bekommen.
Gruß
Ralf
Anzeige
AW: Anderes Sheet?
24.11.2004 22:31:38
Andi
Danke! Dachte, ich erreich dich nicht mehr...
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Txt-Datei mit Trennzeichen in Excel einlesen


Schritt-für-Schritt-Anleitung

Um eine txt-Datei mit einem bestimmten Trennzeichen in Excel einzulesen und die Daten in ein bestehendes Tabellenblatt (z.B. "Tabelle2") zu übertragen, kannst du folgendes VBA-Skript verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge in einem neuen Modul folgenden Code ein:
Sub TxtDateiEinlesen()
    Dim sPath As String
    Dim FileName As String
    Dim InputData As String
    Dim anzfound As Integer

    anzfound = 0
    sPath = "C:\WUTemp\" 'Pfad zur txt-Datei anpassen
    FileName = Dir(sPath & "*.txt")

    If FileName <> "" Then
        Do While FileName <> ""
            Open sPath & FileName For Input As #1
            Do While Not EOF(1)
                Line Input #1, InputData
                anzfound = anzfound + 1
                Sheets("Tabelle2").Cells(anzfound + 1, 1) = InputData 'Daten in Tabelle2 schreiben
            Loop
            Close #1
            FileName = Dir
        Loop
    End If
End Sub
  1. Passe den Pfad sPath zu deiner txt-Datei entsprechend an.
  2. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Loop ohne Do": Dieser Fehler tritt auf, wenn die Struktur des Codes nicht stimmt. Stelle sicher, dass alle Do While- und Loop-Befehle korrekt sind.
  • Daten landen in einem neuen Sheet: Wenn die Daten in einem neuen Sheet erscheinen, überprüfe den Code und stelle sicher, dass du die richtige Tabelle angibst, wie in Sheets("Tabelle2").

Alternative Methoden

Neben dem VBA-Skript gibt es auch andere Möglichkeiten, eine txt-Datei in Excel zu importieren:

  1. Textimport-Assistent:

    • Gehe zu Daten > Aus Text/CSV.
    • Wähle die txt-Datei aus und folge dem Assistenten, um die Trennzeichen (z.B. Leerzeichen) auszuwählen.
  2. Power Query (in neueren Excel-Versionen):

    • Gehe zu Daten > Daten abrufen > Aus Datei > Aus Text/CSV.
    • Wähle die Datei aus und konfiguriere die Abfrage.

Praktische Beispiele

Hier sind einige Beispiele, wie du txt-Dateien mit verschiedenen Trennzeichen einlesen kannst:

  • Einlesen mit Leerzeichen als Trennzeichen:
' Beispielcode für Leerzeichen
If InStr(1, InputData, " ") > 0 Then
    ' Verarbeite die Daten
End If
  • Einlesen mit Komma als Trennzeichen:
' Beispielcode für Komma
If InStr(1, InputData, ",") > 0 Then
    ' Verarbeite die Daten
End If

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann die Ausführung des Codes beschleunigen, indem es das Bildschirm-Update während des Imports deaktiviert.
  • Prüfe auf leere Zeilen: Füge eine Bedingung hinzu, um leere Zeilen zu ignorieren, bevor du die Daten in "Tabelle2" schreibst.
If Trim(InputData) <> "" Then
    ' Schreibe die Daten
End If

FAQ: Häufige Fragen

1. Frage Kann ich auch CSV-Dateien mit diesem Skript einlesen?

Antwort: Ja, das Skript kann auch für CSV-Dateien verwendet werden. Ändere einfach den Filter im Dir-Befehl zu "*.csv".

2. Frage Wie kann ich das Skript so anpassen, dass die Daten an einer bestimmten Zeile in "Tabelle2" eingefügt werden?

Antwort: Ändere die Zeile in Sheets("Tabelle2").Cells(anzfound + 1, 1) zu Sheets("Tabelle2").Cells(Zeilennummer, 1), wobei Zeilennummer die gewünschte Startzeile ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige