Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textdatei mit 120.000 Zeilen öffnen

Textdatei mit 120.000 Zeilen öffnen
27.07.2007 10:08:06
Yosherl
Hallo Leute!
Wiedermal brauch ich eure Hilfe!
Ich brauche eine Lösung um eine Textdatei mit 120.000 Zeilen zu öffnen.
Theoretisch könnte ich nun hergehen und die Textdatei vorher auf 2 Dateien aufsplitten, was ich aber nicht möchte.
Danach hatte ich überlegt ob ich beim öffnen mit Excel nicht sagen kann von Zeile 1 bis x lesen. Also mit dem open.workbook befehl. Leider kann ich da aber nur die Startrow angeben..
Letztlich könnte ich die Textdatei von hinten lesen, dazu müsste ich aber die bereits gelesenen Zeilen aus der Textdatei löschen?
Weiss jemand wie das funktioniert? Oder kann ich doch im Excel dass ich die Textdatei von Zeile 1 bis x öffnen möchte?
Grüße,
yosherl

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 10:20:00
Nils
Hi yosherl,
also mit VBa is des kein Problem.

Sub lesenTextDatei()
Dim Ind as Integer
Dim Text as string
Dim zeile as integer
open "Dateiname.txt" for input as #1
ind=0
zeile=0
do until eof(1)
line input #1, text
ind=ind+1
if ind>50000 and ind


Also mit dem Code würdest du z.b. die Zeilen 50000-60000 in die ersten 10000 Zeilen deines Excel sheets schreiben.
Hoffe dir hilf des weiter.
MfG
Nils

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 10:32:31
Yosherl
Hallo Nils,
vielen Dank für deine Antwort, aber leider ist das nicht die Lösung nach der ich Suche.
Wir haben riesige textfiles, und die haben teilweise ~100 Spalten, mit der Lösung wird man nicht wirklich froh :)
Darum meinte ich eben dass ich die Textdatei kürzen möchte, um dann die Textdatei komplett laden zu können.
grüße,
yosherl

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 12:20:00
Yosherl
Frage noch offen

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 12:31:15
ingUR
Hallo, @yosherl,
könntest Du nicht vor dem Öffnen des Textfiles, der ja noch nicht bestandteil Deiner XLS-Arbeitsmappe ist, somit zum Zeitpunkt des Öffnens der Mappe noch gar keinen Zugriff auf die Textdatei durchführt, eine Abfragebox die einzulesene Start- und Endezeile einlesen. Dabei genügt durchaus eine Inputzeile, deren Inhalt, ähnlich wie bei Druckaufträgen, bei denen die zu druckenden Seiten selktiert werden, ausgewertet werden.
Die Frage ist also, an welcher Stelle eröffnest die wie Textdatei?
Gruß,
Uwe

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 12:37:32
Yosherl
Hallo Uwe,
du meinst sowas wie eine Inputbox? Leider nein.
Die Lösung wäre zb dass ich die Textdatei von hinten anfangen kann zu lesen, jedoch müsste ich dann die bereits eingelesenen teile aus der Textdatei löschen.
Weiss denn jemand einen Befehl wie ich Zeilen aus einer Textdatei löschen kann, ohne sie neu schreiben zu müssen ?
Auch denkbar wäre eine Endrow beim öffnen:
Workbooks.OpenText FileName:= _
"bla.txt", Origin:=932, StartRow:=1, und dazu eine endrow..
Grüße,
yosherl

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 13:04:45
ingUR
Hallo, yosherl,
ine Textdatei, deren Datensätze nicht in bekamnten Datensatzlängen abgespeichert ist, kann man nur durch vollständiges Lesen jeder Zeile und Zählen auf ihre Anzahl in überprüfen. Anders bei Datensätzen mit festen Längen.

Sub ZaehleTextzeilenInDatei()
dim z as long, strZ as string
Open "C:\temp\text.txt" For Input As #1
While Not EOF(1)
z = z + 1: Line Input #1, strZ
Wend
Close #1
'nun kannst Du mit der Anzal der Zeilen in der Datei operieren
End Sub

diese Routine könntest Du also benutzen, um im Info-Fenster die Zahl der Textzeilen in der Datei anzuzeigen
Hier nun eine Umsetzung der Lösung mit InputBox, wobei die Zeilenanzeil in einem Vorlauf aus der Datei ermittelt werden kann:


Sub ZeilenbereichAusTextDateiLesen()
Dim antwort As String
Dim StartZ As Long, EndeZ As Long, z As Long, r As Long
Dim strZ As String
antwort = InputBox("einzulesenden Zeilen")
'Auswertung - derzeit nur Syntax: StartZ;EndeZ,
'z.B. 10;500
'es werden die Zeilen 10 bis 500 eingelesen
StartZ = Val(antwort)
EndeZ = Val(Mid(antwort, InStr(antwort, ";") + 1))
Open "c:\test\beispiel.txt" For Input As #1
While Not EOF(1)
z = z + 1: Line Input #1, strZ
If Not (z  EndeZ) Then
r = r + 1
Cells(r, 1) = strZ
End If
Wend
End Sub

Vielelicht nutzt dieses etwas als erste Idee, die natürlich durch Elemenrte der Dateiauswahl ergänzt werden sollte.
Gruß,
Uwe

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 13:07:00
ingUR
Achtung, im zweiten Programmblock ist zwischen Wend und End Sub die Programmzeile Close #1 einzufügen!

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 13:43:07
ingUR
"Verknüpfung":

Option Explicit
Sub ZeilenbereichAusTextDateiLesen()
Dim antwort As String
Dim StartZ As Long, EndeZ As Long, z As Long, r As Long
Dim strZ As String
Dim fn As String
fn = "C:\temp\beispiele.txt"
Open fn For Input As #1
While Not EOF(1)
z = z + 1: Line Input #1, strZ
Wend
Close #1
antwort = InputBox("einzulesenden Zeilen (zwischen 1 und " & z & ")")
'Auswertung - derzeit nur Syntax: StartZ;EndeZ,
'z.B. 10;500
'es werden die Zeilen 10 bis 500 eingelesen
StartZ = Val(antwort)
EndeZ = Val(Mid(antwort, InStr(antwort, ";") + 1))
Open fn For Input As #1
While Not EOF(1)
z = z + 1: Line Input #1, strZ
If Not (z  EndeZ) Then
r = r + 1
Cells(r, 1) = strZ
End If
Wend
Close #1
End Sub

Ggf. muß noch die Aktion "Text in Spalten" programmiert werden. Doch den Prohrammbereich kann man sich leicht mit dem Makrorecorder erstellen lassen, das dann in das Makro einbindet.
Gruß,
Uwe

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 12:34:46
ingUR
Hallo, Nils,
kleine Anmerkung zu Deiner Programmsequenz: Ind und zeile sollten m.E. als Datentyp long deklariert werden.
Gruß,
Uwe

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 13:35:51
gerwas
Hallo
Lege doch einfach eine neue tabelle an, wenn die erste voll ist!

Sub lesenTextDatei()
Dim Ind as Long
Dim Text as string
Dim zeile as long
open "Dateiname.txt" for input as #1
ind=0
zeile=0
do until eof(1)
line input #1, text
ind=ind+1
if ind =65537 then
worksheets.add 'damit ist es auch gleich active
zeile=0
endif
zeile=zeile+1
activesheet.cells(zeile,1)=text
loop
close #1
End Sub


mfg GerWas

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 14:28:00
Yosherl
Dann habe ich wieder ein Lineprozessing!
Ich möchte nicht hergehen und 88 Spalten von einer Textdatei in eine ExcelTabelle schreiben..
Aus diesem Grund möchte ich gerne Zeilen aus der Textdatei löschen, und dann in eine Exceltabelle importieren, nicht zeilenweise schreiben.
Oder bereits beim Import sagen: Lese mir von Zeile 1 bis zeile x alles ein...

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 14:44:37
ingUR
Hallo, @Yosherl,
wenn Du schreibst, «...möchte ich gerne Zeilen aus der Textdatei löschen, und dann in eine Exceltabelle importieren, ...», dann könnte man diese Arbeit ohne das Einlesen in eine Exceltabelle erledigen, wenn es eindeutige Kriterien dafür gibt, welche Zeilen erhalten und welche Zeilen gelöscht werden sollen.
PseudoCode:
Öffne Datei1 für Input
Öffne Datei2 für Output
:WHILE NOT (EOF 1)
Lese aus Datei1 eine Zeile
Erfüllt Zeile nicht die Löschkriterien, dann Schreibe Zeile in Datei2
:WEND
Schliesse Datei1
Schliesse Datei2
Umbenene Datei1 (BAK)
Umbenenne Datei2
Gruß,
Uwe

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 14:52:00
Yosherl
Ja Uwe, genau das ist unser Stand.
Jedoch haben wir manchmal auch Dateien die 700.000 Zeilen haben. Dementsprechend viele Textfiles haben wir wieder.
Genau diesen Porzess möchten wir ändern, und nicht in einzelne Dateien Splitten.
grüße,
yosherl

AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 15:05:00
gerwas
Hallo
Wovon reden wir hier eigentlich? Du willst eine textdatei zeilenweise lesen? Woher weißt du welche zeilen du lesen willst, steht das in der betreffenden zeile in der textdatei, oder woanders?
Was sollen dann die 88 Spalten, die du oben erwähnst? Das ist doch etwas ganz anderes!
Erklärung erbeten
Gerwas

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 15:20:54
Yosherl
"..du willst eine Textdatei zeilenweise lesen..." Nein
"..Woher weißt du welche zeilen du lesen willst.." Alle zeilen sollen gelesen werden
"..Was sollen dann die 88 Spalten.." Wenn ich hergehe und Zeile für Zeile in eine Excel Tabelle schreibe, dann muss ich pro Zeile 88 Spalten befüllen, das möchte ich nicht. Somit haben die Spalten damit wohl was zu tun.
Beispiel wie es mir am liebsten wäre:
Workbooks.OpenText FileName:= _
"bla.txt", Origin:=932, StartRow:=1, endrow 65000...
Datei speichern...
Workbooks.OpenText FileName:= _
"bla2.txt", Origin:=932, StartRow:=65001, endrow 120000...
Datei speichern..
usw......
leider kenne ich keine Möglichkeit sowas in der Art zu machen.. Dies wäre aber ein Lösungsansatz für die Lösung die ich Suche.
Gruß,
yosherl
Einfach eine riesige Textdatei in Excel bekommen ohne ein Lineprocessing zu machen. Da man sonst eine Irre laufzeit hat.

Anzeige
AW: Textdatei mit 120.000 Zeilen öffnen
27.07.2007 15:40:00
ingUR
Hallo, @yosherl,
die WorkBook.OpenText-Methode kannst Du definitiv nicht einsetzen, da sie eben den Parameter "EndRow" nicht kennt. Damit bleibt nur übrig, diese Methode nachzubilden. Ein Grundgerüxt habe ich Dir bereits beschrieben, wobei der ProgrammCode aus meinem Beitrag von heute, 27.07.2007 umd 13:42:07, durchaus als Grundgerüst geignet ist. Dort fehlt eben nur noch das Wegspeichern. Eine Schleife um die einzelnen Bereich kann gelegt werden. Bei diesem Weg muß die Methode für TextInSpalten noch eingefügt werden, bevor das Speicheren erfolgt und der nächste Bereich der großen Datei gelesen wird.
Doch um ehrlich zu sein, verstehe ich Deinen kritischen Hinweis auf die Vielzahl an Deiten nicht, wo Du doch hier gerade beschreibst, dass Du aus einer großen Datei mehrere kleine Datein erstellst:

Dein Beispiel, @yosherl, mit den bisher vorgestellten Elementen:
Beispiel wie es mir am liebsten wäre:
Workbooks.OpenText FileName:= _
"bla.txt", Origin:=932, StartRow:=1, endrow 65000...
Open "bla.txt" for input as #1
Open "bla_part01.txt! for output as #2
Lese die ersten 65000 Zeilen aus Datei1 und Schreiben sie in die Datei #2
Close #2
Open "bla_part02.txt! for output as #2
Lese Zeilen 65001 bis 13000 aus Datei1 und Schreiben sie in die Datei #2
Close #2
...bis EOF(1)
Close #1
close #2

Der Ausgabedateienamen wird generiert, und die gelesene Zeile wird gleich wieder in die Output-Datei geschrieben:
Line Input #2 , strInL
Print #2, strL


Gruß,
Uwe

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige