Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
424to428
424to428
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige