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

txt-datei einlesen

Forumthread: txt-datei einlesen

txt-datei einlesen
13.01.2003 08:24:52
Darius
Hi Folks,

Habe ein kleines problem veilleicht hat ja jemand eine schnelle lösung. Und zwar handelt es sich um eine txt datei, die möchte ich einlesen, die werte in dieser TXT datei sind mit leerzeichen getrennt, hat vielleicht jemand eine VBA-lösung für mein Problem?
Bei dieser txt datei handelt es sich ursprünglich um eine Mail, vielleicht ist es sogar möglich sich diese Mail direkt ausm Outlook zu greifen und dann einzulesen.

Gruß darius

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: txt-datei einlesen
13.01.2003 08:35:16
Hans W. Herber
Hallo Darius,

verwende den Makrorecorder und öffne die Textdatei. Im Textimport-Assistenten wählst Du als Feldtrenner das Leerzeichen.

Was den direkten Import aus Outlook anbetrifft, sieh Dir den folgenden Text aus der Excel-FAQ an:
http://xlfaq.herber.de/texte/182302h.htm

hans

Anzeige
Re: txt-datei einlesen
13.01.2003 08:56:41
Darius
Hallo Hans,

also der link den du mir gezeigt hast tut einwand frei...
Das script natürlich auch.

Weist du vielleicht noch wie ich VBA sagen kann das es sich um leerzeichen getrennte wert handelt?

Gruß darius

Re: txt-datei einlesen
13.01.2003 09:14:38
Hans W. Herber
Hallo Darius,

wie folgt:

hans

Re: txt-datei einlesen
13.01.2003 09:42:53
darius
hi Hans,

wow, ihr seid hier echt genial.....
sorry das ich dir noch mal auf die Nerven gehe, folgendes Prob.
das ist mein Mail file:

Product: |130103 140103 150103 160103 170103 180103 190103 200103 210103
--------------------------------------------------------------------------------
a * 0 0 20000 0 0 0 0 0 0
b * 0 0 10000 0 0 0 0 0 0
c * 0 0 10000 0 0 0 0 0 0
d * 0 0 250 0 0 0 0 0 0
e | 4 0 0 0 0 0 0 0 0
f | 18 0 102 89 0 0 0 0 0
--------------------------------------------------------------------------------
Total Prod./EACH| 25321 2727 52773 2741 3956 0 0 3113 2104
Dieses muss ich einlesen, jetzt sind noch die Werte halt mit einem leerzeichen getrennt.
Dein Script tut soweit, jedoch verteilt er mir diese werte ganz konfuß auf der kompletten xls-Seite.
Kann es sein, das er nicht weiß wann eine Zeile aufhört?

Dank nochmals für deine Bemühungen

Gruß darius



Anzeige
Re: txt-datei einlesen
13.01.2003 09:54:34
Hans W. Herber
Hallo Darius,

es handelt sich hier nicht um eine Textdatei mit eine Leerzeichen als Feldsparator. Was Du da hast ist eine Textdatei, die in jeder Spalte unterschiedlich viele Leerzeichen aufweist, da hat mein Code keine Chance, denn er sieht jedes Leerzeichen als eine neue Spalte an.

Wenn es sich um eine Datei mit festen Feldlängen je Spalte handelt, splitte den jeweiligen Zeilentext nach diesen Feldlängen auf, sind die Feldlängen in den Spalten unterschiedlich, in den einzelnen Dateien aber gleich, müssen die einzelnen Felder aufgedröselt werden.

Möglicherweise ist die Tabelle aber auch um eine Tab-separierte Datei. In diesem Fall ersetze in meinem Code das " " durch ein vbTab.

Ohne es testen zu können, reicht es aber auch, wenn Du nach der Zeile:
Line Input #1, sTxt

eine neue Zeile:
sTxt = WorksheetFunction.Trim(sTxt)
einfügst.

Jede Textdatei hat ihre Eigenheiten, generelle Lösungen sind hier selten.

hans

Anzeige
Re: txt-datei einlesen
13.01.2003 09:56:40
darius
Em sorry,

nochmal ne frage, was mach ich den wenn die leerzeichen anzahl unterschiedlich ist zwischen den einzelnen werten?
Wie kann ich dem Script sagen, mach solange bis nächstes zeichen kommt?

gruß darius

Re: txt-datei einlesen
13.01.2003 10:01:41
Hans W. Herber
... teste zuerst den letzten Punkt meiner vorigen Antwort.

hans

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

txt-Datei in Excel einlesen mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu Entwicklertools > Visual Basic, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Rechtsklick auf VBAProject (DeineDatei.xlsm) > Einfügen > Modul.

  3. Erstelle den Code zum Einlesen der .txt-Datei:

    Sub txtDateiEinlesen()
       Dim sTxt As String
       Dim i As Integer
       Dim Zeile As Integer
    
       Open "C:\Pfad\zu\deiner\datei.txt" For Input As #1
       Zeile = 1
    
       Do While Not EOF(1)
           Line Input #1, sTxt
           sTxt = WorksheetFunction.Trim(sTxt) ' Entferne überflüssige Leerzeichen
           Dim Werte() As String
           Werte = Split(sTxt, " ") ' Trenne die Werte nach Leerzeichen
    
           For i = LBound(Werte) To UBound(Werte)
               Cells(Zeile, i + 1).Value = Werte(i)
           Next i
           Zeile = Zeile + 1
       Loop
       Close #1
    End Sub
  4. Passe den Pfad zur Textdatei an, indem Du C:\Pfad\zu\deiner\datei.txt ersetzt.

  5. Führe das Skript aus, indem Du im VBA-Editor auf F5 drückst oder das Makro über Excel startest.


Häufige Fehler und Lösungen

  • Problem: Werte werden unordentlich in den Zellen verteilt.

    • Lösung: Stelle sicher, dass die Werte in der .txt-Datei korrekt durch Leerzeichen getrennt sind. Wenn es unterschiedliche Leerzeichen gibt, solltest Du die Split-Funktion anpassen, um die Werte besser zu trennen.
  • Problem: Die Datei wird nicht gefunden.

    • Lösung: Überprüfe den angegebenen Dateipfad. Stelle sicher, dass die Datei unter dem angegebenen Pfad existiert.
  • Problem: Fehlermeldung bei der Ausführung des Skripts.

    • Lösung: Überprüfe den VBA-Code auf Syntaxfehler oder Tippfehler.

Alternative Methoden

  • Textimport-Assistent: Du kannst die .txt-Datei auch direkt über Daten > Aus Text/CSV importieren und dabei den Textimport-Assistenten nutzen. Wähle als Feldtrenner das Leerzeichen aus.

  • Power Query: Eine weitere Möglichkeit, .txt-Dateien in Excel einzulesen, ist die Verwendung von Power Query. Dies ermöglicht eine benutzerfreundliche Schnittstelle, um Daten zu transformieren und zu laden.


Praktische Beispiele

  • Einlesen einer .txt-Datei mit variablen Leerzeichen: Wenn die Anzahl der Leerzeichen zwischen den Werten variiert, kann eine Anpassung des Codes erfolgen:

    sTxt = Replace(sTxt, " ", vbTab) ' Ersetze Leerzeichen durch Tabulator
    Werte = Split(sTxt, vbTab) ' Trenne die Werte nach Tabulator
  • Einlesen von .txt-Dateien mit festen Feldlängen: Bei festen Feldlängen, kannst Du den Mid-Befehl verwenden, um die Werte direkt zu extrahieren.


Tipps für Profis

  • Nutze die Debug.Print-Anweisung, um den Inhalt der Variablen während der Ausführung zu überwachen.
  • Erstelle eine Fehlerbehandlungsroutine, um besser mit unerwarteten Fehlern umzugehen.
  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden, was die Fehlersuche erleichtert.

FAQ: Häufige Fragen

1. Wie kann ich eine .txt-Datei mit Kommatrennung einlesen? Du kannst den Code anpassen, indem Du die Split-Funktion wie folgt änderst:

Werte = Split(sTxt, ",")

2. Was mache ich, wenn die Daten nicht richtig formatiert sind? Stelle sicher, dass Du die Trim-Funktion verwendest, um überflüssige Leerzeichen zu entfernen. Bei komplexeren Formaten kann eine Vorverarbeitung der .txt-Datei nötig sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige