Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
504to508
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
504to508
504to508
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

viele Textdateien einlesen

viele Textdateien einlesen
25.10.2004 12:43:19
Tino
Hallo,
habe ein broplem, habe ca. 10000 Textdateien.(alle sind gleich aufgebaut und in einem Ordner)
In diesen Dateien, ist in Zeile 21 eine mehrstellige Zahl, diesen möchte ich aus allen Dateien einlesen und in einem Excelblatt abwärts aufgelistet haben. Dies soll natürlich schnell gehen.
Sollte bestimmt gehen über ein Macro.
Später möchte ich vielleicht noch Zeile 21 und 29 einlesen!
Welcher Profi kann mir helfen!?

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: viele Textdateien einlesen
Ramses
Hallo
haben die Mappenbezeichnungen einen definierten Namen der eine bestimmte Logik erkennen lässt ?
Z.B. Mapp1.xls, Mappe2.xls, Mappe3.xls usw.
Hier mal einen Blankovorschlag der allerdings die Mappen jeweils öffnen muss.
Option Explicit

Sub Dateien_in_eine_Tabelle_zusammenfuehren()
Dim Datei As String
Dim Arbeitsmappe As String
Dim tarWb As Workbook, tarwks As Worksheet
Dim PFAD As String
PFAD = "d:\Rainer\"
Datei = Dir(PFAD & "*.xls")
'Aktuell geöffnete Mappe
Set tarWb = Workbooks(ThisWorkbook.Name)
'Wo die Daten hinsollen
Set tarwks = tarWb.Worksheets("Tabelle1")
Application.ScreenUpdating = False
Arbeitsmappe = ActiveWorkbook.Name
Do While Datei <> ""
Workbooks.Open Datei
'Schreibt in die nächste freie Zelle von "tarWks"
'H21 ist die Zelle wo der Wert ausgelesen werden soll
tarwks.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1) = _
Workbooks(Datei).Worksheets("Tabelle1").Range("H21")
ActiveWorkbook.Close False
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub

Den Code in ein Modul deiner Mappe kopieren wo du die Daten haben willst und ausführen.
Den Code kannst du dann bei Bearf auf andere Zellen erweitern, indem du die Zeile
tarwks.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1) = _
Workbooks(Datei).Worksheets("Tabelle1").Range("H21")
kopierst, die Zahl Spaltenbezeichnung " .Row, 1) = " anpasst und die neue Ausgabezelle definierst.
Gruss Rainer
Anzeige
AW: viele Textdateien einlesen
25.10.2004 13:57:09
tino
Hallo,
geht nicht bleibt bei "Workbooks.Open Datei" mit fehler stehen.
siehe bilddatei.
zu deine frage: nein alle haben einen anderen Namen.
AW: viele Textdateien einlesen
Ramses
Hallo
Kann nicht sein.
Der Code ist getestet und funktioniert.
Hast du den Pfad angepasst, mit einem Backslash am Schluss ?
Welche Fehlermeldung erhältst du ?
Wo ist die Bilddatei ?
Gruss Rainer
AW: viele Textdateien einlesen
25.10.2004 14:06:45
tino
Userbild
meine Pfad angepasst!
habe aus
"Datei = Dir(PFAD & "*.xls")"
"Datei = Dir(PFAD & "*.txt")"
da es sich um Textdateien handelt!
Anzeige
Doof....
Ramses
Hallo
Sorry, das mit den Textdateien ist mir durch die Lappen gegangen :-(
Ich hatte mit XLS Dateien probiert.

Sub Dateien_in_eine_Tabelle_zusammenfuehren()
Dim Datei As String
Dim Arbeitsmappe As String
Dim tarWb As Workbook, tarwks As Worksheet
Dim PFAD As String
PFAD = "C:\"
Datei = Dir(PFAD & "*.txt")
'Aktuell geöffnete Mappe
Set tarWb = Workbooks(ThisWorkbook.Name)
'Wo die Daten hinsollen
Set tarwks = tarWb.Worksheets("Tabelle1")
Application.ScreenUpdating = False
Arbeitsmappe = ActiveWorkbook.Name
Do While Datei <> ""
Call Read_Extern_File(PFAD & Datei)
'Schreibt in die nächste freie Zelle von "tarWks"
'H21 ist die Zelle wo der Wert ausgelesen werden soll
tarwks.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1) = tarValue
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub


Sub Read_Extern_File(ReadFile As String)
'Hilfsvariable für Anzahl Datensätze
Dim Text1 As String
'Variablen für den Array nötig
Dim txtlines As Long, i As Long
'Für Office97 muss das Array TextArr als String definiert werden
'Entdeckt duch Gerd Z aus dem Herber Forum
Dim textArr As Variant
'Schliessen einer geöffneten Datei
Close #1
'1. Öffnen der Datei
'Den Namen und Pfad bitte anpassen
Open ReadFile For Input As #1
'Die anzahl ist nötig um die Grösse des Arrays zu deklarieren
'Zähler auf 0 setzen
txtlines = 0
Do While Not EOF(1)    ' Schleife bis Dateiende.
Line Input #1, Text1    ' Hilfsvariable zum einlesen verwenden
'Zähler hochzählen
txtlines = txtlines + 1
Loop
'Schliessen der Datei weil Dateiende erreicht wurde
Close #1
'Erneutes Öffnen um zum Dateianfang zu kommen
'Datei zum Einlesen öffnen.
Open ReadFile For Input As #1
'Array neu auf die Anzahl der Linien initialisieren
'Könnte man auch einfacher lösen,
'auf die Schnelle geht es aber
ReDim textArr(txtlines)
For i = 1 To txtlines
Input #1, textArr(i)
Next i
'Wert aus Zeile 21 nehmen
tarValue = textArr(21)
Close #1
End Sub

Gruss Rainer
Anzeige
AW: Doof....
25.10.2004 14:46:11
tino
geht immer noch nicht.
Makro läuft durch, aber Excelmappe bleibt leer!
Habe versucht aus "tarValue = textArr(21)" die 21 mit
anderen werten zu ersetzen 2, 3, 4 usw. aber tabelle bleibt leer.
AW: Doof....
Ramses
Hallo
das Makro ist getestet und funktioniert.
Lade mal eine Beispiel Textdatei hoch.
Gruss Rainer
Es liegt wohl an der frühen Morgenstunde...
Ramses
Hallo
beim kopieren ist die erste Zeile verlorengegangen
Public tarValue As Variant
Muss zwischen die Zeile
Option Explicit
Public tarValue As Variant
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
So sollte es laufen.
Das kommte davon, wenn man "Option Explicit" nicht verwendet. Sonst hätte EXCEL dich nämlich darauf aufmerksam gemacht, dass eine Variable nicht definiert ist.
Gruss Rainer
Anzeige
AW: Doof....
Ramses
Hallo
siehe meine Mail oben und ändere
ReDim textArr(txtlines)
For i = 1 To txtlines
Input #1, textArr(i)
Next i
in
ReDim textArr(txtlines)
For i = 1 To txtlines
Line Input #1, textArr(i)
Next i
Gruss Rainer
AW: Doof....
25.10.2004 15:31:28
tino
geht nun schon sehr gut.
aber ich will nicht nerven.
es wird nur ein teil der Zeile eingelesen
ich brauche die ganze Zeile
AW: Doof....
25.10.2004 15:35:04
tino
gut geht jetzt.
danke! wo kann ich soetwas lernen?
Anzeige
Durch mitlesen und ausprobieren :-) o.T.
Ramses
...
AW: Durch mitlesen und ausprobieren :-) o.T.
26.10.2004 09:58:56
tino
geht es nun auch, nur einen bestimmten teil aus
der der Textdatei auszulesen. zBsp. Zeile 11 die 3. Stelle.
die stellen in den Textzeilen sind durch Komma getrennt.
hier eine Textdatei als Bsp. möchte nun aus der Zeile 11 den 3. Wert
https://www.herber.de/bbs/user/12621.txt

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige