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

Forumthread: Textdateien importieren / Spalten erkennen

Textdateien importieren / Spalten erkennen
Russi
Hallo Forum!
Ich plage mich mit einem Problem: Ich muss oft Textdateien zur Weiterverarbeitung in Excel importieren. Deshalb habe ich mir zu diesem Zweck ein Makro geschrieben. Ich benutze "Line Input", da nur bestimmte Zeilen importiert werden sollen.
Bis hier alles toll, aber: Kann ich VBA beibringen, die Spalten automatisch zu erkennen?
Das Problem ist: Es handelt sich um viele unterschiedliche Text-Dateien, die sowohl unterschiedlich VIELE Spalten als auch unterschiedlich BREITE Spalten haben (getrennt durch mehrere Leerzeichen).
Toll wäre, wenn ich EIN Makro für ALLE Textdateien einsetzen könnte!
Bisher sieht mein Makro, welches ich für jede Datei"art" anpassen muss, so aus:

Sub import()
Reihe = 4 'INTEGER_Variable für Zeile in Excel-Tabelle
SourceDatei(1) = "C:\Eigene Daten\Test1.TXT"
SourceDatei(2) = "C:\Eigene Daten\Test2.TXT"
For Nummer = 1 To 2
Open SourceDatei(Nummer) For Input As FF
' Suchen bis Dateiende
Do While Not EOF(FF) = True
Line Input #1, Zeichenfolge
' Diese Bedingung trifft auf alle zu importierenden Zeilen zu!
' andere Zeilen sollen nicht importiert werden
If IsNumeric(Mid(Zeichenfolge, 3, 10)) = True Then
With Worksheets("Tabelle1")
.Cells(Reihe, 1) = Mid(Zeichenfolge, 3, 10)
.Cells(Reihe, 2) = Trim(Mid(Zeichenfolge, 14, 27))
.Cells(Reihe, 3) = Trim(Mid(Zeichenfolge, 42, 13))
.Cells(Reihe, 5) = Trim(Mid(Zeichenfolge, 48, 13))
.Cells(Reihe, 4) = Trim(Mid(Zeichenfolge, 63, 13))
.Cells(Reihe, 8) = Trim(Mid(Zeichenfolge, 78, 13))
.Cells(Reihe, 7) = Trim(Mid(Zeichenfolge, 93, 13))
End With
Reihe = Reihe + 1
End If
Loop
Close FF
Next Nummer
End Sub

Hat vielleicht jemand von Euch eine Anregung für mich?
Russi
www.Russi.de.tt
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textdateien importieren / Spalten erkennen
peter
Hallo!
Es gibt in Excel eine Funktion zum Importieren versch. Dateien (auch txt), wobeí die Spalten anhand von Trennzeichen (z.B. Leerzeichen) erkannt werden. Ich würde das einmal mit dem Makrorecorder durchchecken. - Leider kann ich Dir diese Funtion nicht genauer nennen, weil ich hier kein Excel hab, aber Du wirst es finden.
(Problem ist nur: wenn Leerzeichen als Trennzeichen, dann JEDES ! ... also Eines: JA und Mehrere: auch JA !)
Die Anzahl der Spalten könnte man dann nach dem Import in Excel ja immer noch leicht mit VBA feststellen.
Hoffe es funkt irgendwie
Liebe Grüße Peter
Anzeige
AW: Textdateien importieren / Nachtrag
peter
Nachtrag: ...die nicht benötigten Zeilen kann man natürlich auch nach dem Import leicht mit VBA ausscheiden. Wenn die Textdateien nicht allzu groß sind, sollte das kein Problem sein.
LG Peter
AW: Textdateien importieren / Nachtrag
Russi
Hallo Peter!
Erstmal danke für die Meldung!
Du meinst sicherlich die Funktion "Workbooks.OpenText". Diese Funktion hat aber für meinen Fall meines Wissens nach 2 Probleme: 1. Sie benötigt ein definiertes Array, um die Spaltenpositionen festzulegen und 2. Der Import erfolgt in eine neue Arbeitsmappe und nicht wie in meinem Fall in eine bestehende Tabelle.
Die von mir gewählte Funktion "Line Input" zieht sich die Datei zeilenweise rein und packt jede Zeile erstmal in eine String-Variable ("Zeichenfolge").
Ich muss also "nur" die Argumente meiner verwendeten MID-Befehle durch flexible Argumente ersetzen. Aber wie ermittle ich die Startposition einer Spalte in der jeweiligen Zeile?
Russi
Anzeige
AW: Textdateien importieren / Nachtrag
peter
... ich meinte das Menü: Daten/Text in Spalten , bzw. in VBA: Selection.TextToColumns !
Versuchs mal, vielleicht hilfts. (Makro-Recorder!!)
(Der Text muß dafür zuerst als Ganzes in die Tabelle (Zelle o. Bereich) übernommen und markiert werden.)
Natürlich gehts anders auch, die Textzeilen im Array lassen sich ja beliebig analysieren, aber ich denke, das wird ziemlich umständlich.
Viel Glück Peter
Anzeige
AW: Textdateien importieren / Nachtrag
05.05.2004 14:18:57
Russi
Hallo Peter!
Ich denke, ich werde einen Mix aus beidem machen: Text erst Zeilenweise einlesen und dann gesamt mit TextToColumns auf Spalten aufteilen.
Wahrscheinlich hast Du Recht: jeden einzelnen String zu analysieren wäre wohl unangemessen kompliziert.
Danke für die Anregung!!!
Viele Grüße
Russi
www.Russi.de.tt
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Textdateien in Excel importieren und Spalten erkennen


Schritt-für-Schritt-Anleitung

Um eine Textdatei in Excel zu importieren und die Spalten automatisch zu erkennen, kannst Du folgende Schritte ausführen:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe.
  2. Gehe zu Daten > Externe Daten abrufen > Textdatei.
  3. Wähle die gewünschte Textdatei aus und klicke auf Importieren.
  4. Wähle im Textimport-Assistenten das Trennzeichen (z.B. Leerzeichen) aus, das Deine Daten trennt.
  5. Überprüfe die Vorschau der Daten und klicke auf Fertig stellen.

Falls Du ein Makro verwenden möchtest, kannst Du den folgenden VBA-Code anpassen:

Sub ImportTextdatei()
    Dim Datei As String
    Dim Reihe As Long
    Reihe = 1 ' Starte in der ersten Zeile

    Datei = "C:\DeinPfad\deineDatei.txt"
    Open Datei For Input As #1

    Do While Not EOF(1)
        Line Input #1, Zeile
        ' Hier kannst Du die Logik zum Einlesen und Aufteilen der Zeilen hinzufügen
        Cells(Reihe, 1).Value = Zeile
        Reihe = Reihe + 1
    Loop

    Close #1
End Sub

Häufige Fehler und Lösungen

  • Problem: Die Spalten werden nicht korrekt erkannt.

    • Lösung: Stelle sicher, dass Du das richtige Trennzeichen im Textimport-Assistenten auswählst. Wenn Du mehrere Leerzeichen hast, kann es hilfreich sein, ein spezielles Trennzeichen wie ein Semikolon zu verwenden.
  • Problem: Es werden nicht alle Daten aus der Textdatei importiert.

    • Lösung: Überprüfe, ob alle zu importierenden Zeilen die gleiche Struktur haben. Möglicherweise musst Du das Makro anpassen, um nur relevante Zeilen zu importieren.

Alternative Methoden

Eine einfache Methode, um txt-Dateien in Excel zu importieren, ist die Verwendung der Funktion Workbooks.OpenText. Diese Funktion kann die Spalten basierend auf Trennzeichen automatisch erkennen.

Wenn Du ein Makro verwenden möchtest, kannst Du die TextToColumns-Methode nutzen, um die Daten nach dem Import weiter zu verarbeiten:

Sub ImportUndTeilen()
    ' Importiere die Textdatei
    ' ...

    ' Teile die Daten in Spalten auf
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, Delimiter:=vbTab, _
        ConsecutiveDelimiter:=False, FieldInfo:=Array(1, 1)
End Sub

Praktische Beispiele

Angenommen, Du hast eine txt-Datei mit folgendem Inhalt:

1234    Daten1    Daten2
5678    Daten3    Daten4

Du kannst die Datei wie folgt in Excel importieren:

  1. Benutze die oben erwähnte Schritt-für-Schritt-Anleitung.
  2. Achte darauf, dass Du Leerzeichen als Trennzeichen auswählst.
  3. Die Daten sollten korrekt auf die Spalten verteilt werden.

Tipps für Profis

  • Nutze Line Input, um spezifische Zeilen aus einer txt-Datei zu importieren, wenn Du nur bestimmte Daten benötigst.
  • Experimentiere mit der TextToColumns-Funktion, um die Flexibilität beim Import von Daten aus txt-Dateien zu erhöhen.
  • Erstelle ein generisches Makro, das für verschiedene txt-Dateien verwendet werden kann, um den Importprozess zu automatisieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere txt-Dateien gleichzeitig importieren? Du kannst eine Schleife im VBA verwenden, um mehrere Dateien nacheinander zu importieren. Stelle sicher, dass Du die Dateinamen in einem Array speicherst.

2. Was tun, wenn die Daten nicht richtig formatiert sind? Überprüfe die Trennzeichen in Deiner Textdatei und stelle sicher, dass Du die richtigen Optionen im Import-Assistenten oder im VBA-Code verwendest. Möglicherweise musst Du die Daten auch nach dem Import anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige