aus ner datei .LST text einlesen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox MsgBox
Bild

Betrifft: aus ner datei .LST text einlesen
von: roland_k
Geschrieben am: 23.04.2005 08:53:19
hi zusammen
bin mal wieder total am anfang (
ich will aus mehreren dateien oder auch nur aus einer datei mit der endung .LST
text einlesen. die dateien sind textadeien warum die endung .Lst ist weiss ich auch nicht.
aus der datei tool1.LST will ich aus verschiedenen zeilen Z. b.
zeile 456.....der anwender hat das tool 4578 mal besucht
zeile 567.....der anwender hat das tool 3421 mal besucht
zeile 655.....der anwender hat das tool 45 mal besucht
die dateien .Lst werden automatisch erzeugt und in C:\Anwender\tool1.LST angelegt
hier sind mehere dateien tool1...tool2....tool45....usw vorhanden
erstmal wollte ich wissen wie ich die zahlen 4578 - 3421 - 45 in zellen meines
arbeitsblattes holen kann so dass in A1 4578 in B4 3421 und in D8 45 steht
die LST daei ist immer gleich aufgebaut so dass die drei zahlen immer am gleichen platz stehn
habe das mit externe daten importieren versucht und da auch mit makrorecorder erfahren dass ich den text ab ner bestimmten zeile holen kann allerdings bis zum ende der datei (ich will eben nur einen wert aus einer zeile bzw 3 versch zeilen holen)
ich sollte den weg haben wie ich eine bestimmte zahl aus einer bestimmmten zeile in eine bestimmte zelle z. b. A1 holen kann...
vielen dank im voraus
gruss roland_k

Bild

Betrifft: AW: aus ner datei .LST text einlesen
von: andre
Geschrieben am: 23.04.2005 09:20:38
Hallo Roland,
Du kannst die Datei mit Excel öffnen und als Trennzeichen das Leerzeichen auswählen. Wenn der Aufbau immer gleich ist hast Du in der 7. Spalte Deine Zahl.
Bild

Betrifft: falsch verstanden?
von: roland_k
Geschrieben am: 23.04.2005 09:42:04
hi andre
ich will die zahl ind ner zelle ??? z. b in A1 siehe beschreibung oben
nich die ganze datei mit 3489 zeilen ??
ne ganz bestimmte zahl per makro auslesen und in A1 eintragen.
hmm ne beispielmappe geht wohl nicht hochladen weil ja ne zugehoerige textdatei brauche ?
danke erst mal
gruss roland
Bild

Betrifft: AW: aus ner datei .LST text einlesen
von: Frigo
Geschrieben am: 23.04.2005 09:41:09
Hallo,
mir fällt keine möglichkeit ein, erst ab einer bestimmten zeile auszulesen. Brauch man aber gar nicht, es müssen doch nur die uninteressanten zeilen ignoriert werden:
Open "C:\Anwender\tool1.LST" For Input Access Read As #1

For i = 1 To 655
Line Input #1, strZeile
If i = 456 Then Sheets(1).Cells(1, 1) = strZeile
If i = 567 Then Sheets(1).Cells(4, 2) = strZeile
If i = 655 Then Sheets(1).Cells(8, 4) = strZeile
Next i
Close #1
Die Zahl muss natürlich noch aus strZeile extrahiert werden.
Frigo
Bild

Betrifft: toll..aber wie extrhiere die zahl?
von: roland_k
Geschrieben am: 23.04.2005 09:52:45
hallo frigo,
toll....einfach zu verstehn danke nu sollte aber wissten wie ich in dem string die zahl finde der text vor und hinter der zahl ist immer gleich nur wie ist das wenn die zahl dann 2 3 oder 4 stellig ist hmmm
danke erst mal wie zeilen habe nu mal schon in de zellen aber eben brauch nur die zahl ?
gruss roland_k
Bild

Betrifft: AW: toll..aber wie extrhiere die zahl?
von: Frigo
Geschrieben am: 23.04.2005 10:17:53
angenommen, die zahl beginnt immer an der 20. Stelle, so kann der string mit MID ab dieser stelle gelesen werden, die frage ist nur noch, wie viele zeichen gelesen werden müssen.
Dafür kann man ab der 20. Stelle das nächste leerzeichen suchen (mit INSTR). Steht dies dann an der 23. Stelle, dann müssen 23-20=3 Zeichen eingelesen werden.
leerstelle = InStr(20, x, " ")
zahl = Val(Mid(strZeile, 20, leerstelle - 20))
dies mus jetzt immer in die IF-Anweisung rein, also
If i = 456 Then
leerstelle = InStr(20, x, " ")
Sheets(1).Cells(1, 1) = Val(Mid(strZeile, 20, leerstelle - 20))
end if
Frigo
Bild

Betrifft: mist nu kommt einlesen hinter dateiende?
von: roland k
Geschrieben am: 23.04.2005 11:47:10
hallo frigo
irgendwie spinnt das ganze?
der hat zwar eingelesen aber nich die angegebenene zeilen?
nu gehts gar nimmer weil der immer moniert einlesen hinter dateiende ?
die zeilen in meiner anwendung sind in zeile 956 960 u 964
kann ich nicht das #1 auf #900 z b stellen und das i auch auf 900 hmm
wenn das ding dann mal wider nach schliessen oeffen lauft holt er aber falsche zeilen rein?
wie koennte man denn ne beispielmappe machen ?
muss ich dazu die textdatei auch laden ?
oder per mail schicken beide dateien ?
gruss roland_k
ps. keine ahnung ob das innert des forum geloest bekomme ...einfacher wäre eben schon man koennte das kurz am telefon klären?
Bild

Betrifft: AW: mist nu kommt einlesen hinter dateiende?
von: andre
Geschrieben am: 23.04.2005 12:11:49
Hallöchen,
erst mal zur Erklärung meiner ersten Antwort. Nachdem Du die Datei reingezogen hast, z.B. auf ein extra Blatt, kannst Du z.B. mit SVERWEIS nach Deiner Ziffernfolge suchen und die Daten übernehmen. Wäre also ohne VBA möglich, hättest nur reichlich Daten in der Datei ...
ein Hinweis zu VAL Funktion:
Die Funktion bringt als Ergebnis die Zahl(en), die vor dem ersten nichtnumerischen Zeichen stehen. val("12 A") bringt 12, die Suche nach dem Leerzeichen nach der Zahl erübrigt sich also.
die 1 oder eine andere Zahl von #1 kannst Du automatisch setzen
MeineDatei=FreeFile
Open "C:\Anwender\tool1.LST" For Input Access Read As #MeineDatei
Do While Not EOF() MeineDatei
Line Input #MeineDatei
...
Loop
Close #MeineDatei
Bild

Betrifft: AW: mist nu kommt einlesen hinter dateiende?
von: Frigo
Geschrieben am: 23.04.2005 12:29:00
wahrscheinlich ist die datei einmal nicht geschlossen worden und es gab deshalb das problem, weil er von der zuletzt eingelesenen zeile wieder angefangen hat.
#1 ist nur die "adresse", unter der die datei geöffnet wird. i ist dagegen die Zählvariable in der Schleife.
die beste lösung ist die von andre, indem einfach mit freefile die nächste freie adresse genommen wird.
@andre: danke für den tip mit VAL, war neu für mich.
Frigo
Bild

Betrifft: AW: mist nu kommt einlesen hinter dateiende?
von: andre
Geschrieben am: 23.04.2005 12:38:34
... gleich noch ein Hinweis zum VAL. Wenn Du Zahlen mit Kommastellen oder Tausenderpunkt hast geht's leider nicht so einfach. Das Komma wird als textzeichen interpretiert und der Tausenderpunkt als Komma. Aber hier passt es.
Grüße, Andre
Bild

Betrifft: wo werde ich eingefuegt ??
von: roland_k
Geschrieben am: 24.04.2005 09:34:10
hi will mal sehn wo dieser beitrag erscheint
kan ich denn nciht gezielt nem beantworter hier antworten ?
roland_k
Bild

Betrifft: drehe im kreis_(( immer noch fehler
von: roland_k
Geschrieben am: 24.04.2005 09:14:38
hi figo ..
habe das nochmal angesehn dachte koennte das nachvollziehn aber da stimmt nichts ?
bei ersten probieren hatte der was in die drei zellen geschrieben aber ich hatte nicht geachtet dass es falssche zeilen waren ....
die zeilen nummern ?? wie kann die genau fnden ?
habe das mit makrorecorder daten importieren gesucht
die zeilen sollten im editor angegeben sein ...hmmm
nu kommt ständig debugger einlesen hinter dateiende ?
wenn das makro durchgelaufen ist ...muss das doch wiederholbar sein ?
ich habe versucht mit F8 nachverfolgen
open ......ok....die datei wird geoeffent denke ich mal (im hintergrund ?)oder wo ist die geoeffnet das finde nicht wo das offen ist damit ich schliessen koennte dann duerfte die fehlermeldung dateiende weg sein
hier die grundlagen studieren und testen ....einbauen ...fehler ....umbauen ....neuen thread ...in hilfe dateien rumsuchen .........muehsam
ich koennte zb ..die testdatei per mail schicken.....
da sollte zeile sowieso ...in zelle sowieso eingetragen werden
wenn dies erst mal lauft dann die zahlen in der zeile suchen
dieser vorgang wird sicher oefter gebraucht
auf der cd von herber ist nix passendes zu finden
in lehrbuechern auch ales moegliche ....nur nocht konkret beschrieben
da werden textdateien angelegt ...was reingeschrieben (per makro) dann der inhalt wieder in ne spalte (herber cd) ...nix logisches
habe nun alle anwendungen geschlossen
excel neustart wieder einlesen nach dateiende ....tja aus die maus?
nun habe eines der grundprobleme:
stimmt der code ?
ist das ev getestet ?
meine zeilen indizes sind von 948 - 980 ...ist das dem ding zu viel?
eben drum ein beispiel was lauft kann man anpassen erweitern usw .
so z b wen er erst mal die zeilen richtig einliest aus der zeile sequeenzen extrahieren
weiter habe ich ein problem damit ob du diesen beitrag ueberhaupt zu sehen bekommst
nu habe seit um 5 am morgen wieder rumprobiert ...nix konkretes ....geschweige was kapiert (
mache mal was anderes wer weiss fällt mir noch was ein
danke erst mal
gruss
roland_k
Bild

Betrifft: Code + Zeilenumbruch
von: Frigo
Geschrieben am: 24.04.2005 12:16:56
Hi Roland,
ich nehme an, du hast den tip von andre umgesetzt und nutzt freefile, oder?
kopier doch mal den ganzen code hier rein, damit man sieht was jetzt der akt. stand ist.
noch was: eine zeile geht immer bis zum Zeilenumbruch und Zeilenvorschubzeichen ("Return").
Wenn in deinem Texteditor die Ansicht so eingestellt ist, dass er automatisch im Fenster umbricht, siehst Du z.B. 2 Zeilen, die in Wirklichkeit aber nur 1 sind.
Öffne die Textdatei mal mit notepad.exe und deaktiviere unter Fomat den Zeilenumbruch.
Dann zähle nochmal die Zeilen bis zu der von dir benötigten Zeile.
Frigo
Bild

Betrifft: hi frigo habe beispiel neu gepostet
von: roland_k
Geschrieben am: 25.04.2005 03:25:50
wäre nett wenn du da mithilfst denke mal andre
wird sich da auch bemuehen
danke
gruss roland
Bild

Betrifft: AW: mist nu kommt einlesen hinter dateiende?
von: roland_k
Geschrieben am: 24.04.2005 09:25:40
hi andre
keine ahnung wie ich das zu meinem problem umsetzen soll?
ioch will nichts einfuegen ....keine daei meine ich ..sonder aus ner datei (txt) aus ner bestimmten zeile ,,,,ne bestimmte zahl
Zeile 978: halle leute heute habe erfolgreich 4578 gev..............
nu soll in ner mappe: heute.xls in tabelle "erfolgreich" per makro (schaltbutton) in zelle B22 die zahl 4578 eeingetragen werden siehe anfangsbeschreibung
was soll ich da in ner mappe oeffnen ...sverweis ? val funktion ?
keine ahnung muesste ich wissen was ich damit soll?
in dem fall lassen wirs ....dann gebe die sequenz in auftrag weil so komme nicht weiter
ich denke mal wäre sicher viel einfacher fuer fragenden und beantworte so was zu erschlagen ein triviales beispiel...das dann ausbauen und erweitern kann
danke fuer deine zeit
gruss roland_k
Bild

Betrifft: wo ist da meine datei ??? freefile???
von: roland_k
Geschrieben am: 24.04.2005 10:01:33
hi andre
sorry welche val funktion
freefile wie soll das wo einbauen ??
wie findet der meine textdatei (toll.txt)
sorry keine ahnung was das fuer umstände sind ?
danek roland_k
Bild

Betrifft: AW: wo ist da meine datei ??? freefile???
von: andre
Geschrieben am: 24.04.2005 16:08:02
Hallo Roland,
Level VBA mit Rekorder oder gar kein VBA? Da sollte man wenigstens den Dateinamen im Beispiel erkennen.

Sub Test()
Dim i%, MeineDatei%, Textzeile$
MeineDatei=FreeFile
Range("A1")=Date
'Augen auf, in der nächsten Zeile steht der Dateiname
Open "C:\Anwender\tool1.LST" For Input Access Read As #MeineDatei
Do While Not EOF() MeineDatei
Line Input #MeineDatei, Textzeile
i=i+1
If i=456 then Range("B1") = Val(Instr(20,Textzeile,4)) 
If i=567 then Range("C1") = Val(Instr(20,Textzeile,4)) 
If i=655 then Range("D1") = Val(Instr(20,Textzeile,4)) 
Loop
Close #MeineDatei
if i<655 then msgbox "Nur " & i & " Zeilen in C:\Anwender\tool1.LST"
End Sub

Bild

Betrifft: kapiere gar nichts ..trotz hilfe ??
von: roland_k
Geschrieben am: 25.04.2005 03:22:17
hi andre
mein level bedeutet nachvollziehn wenn ein code gestestet und mit ner mappe funkt:
kommentare wären hilfreich....ich meinete nicht meine datei sondern was freefile macht?


Sub Test()
Dim i%, MeineDatei%, Textzeile$
MeineDatei=FreeFile
Range("A1")=Date
'Augen auf, in der nächsten Zeile steht der Dateiname
Open "C:\Anwender\tool1.LST" For Input Access Read As #MeineDatei
Do While Not EOF() MeineDatei 
########hier kommt direckt fehler ...sollte so sein:
EOF(MeineDatei)
Line Input #MeineDatei, Textzeile
i=i+1
If i=456 then Range("B1") = Val(Instr(20,Textzeile,4)) ####was macht die 20  was die 4
If i=567 then Range("C1") = Val(Instr(20,Textzeile,4)) 
If i=655 then Range("D1") = Val(Instr(20,Textzeile,4)) 
Loop
Close #MeineDatei
if i<655 then msgbox "Nur " & i & " Zeilen in C:\Anwender\tool1.LST"
End Sub

ich suchte die richtigen zeilennummern so:
daten.....externe daten importieren....daten importieren
da kommt fenster wo links neben dem text zeilennummern sind
diese muesstend och koreckte zeilennummern in dieser datei sein?
sie datei hate keine zeilenumbrüche aber wohl leerzeilen?
so komme nicht weiter
drum mache neuen beitrag:
eine text datei lade hoch
eine mappe mit schaltbutton
problembeschreibung innerhalb mappe
der beantworter bitte den code in die mappe integrieren
dann sehe nach runterladen was passiert
habe auch mit schrittweise versucht F8 aber auch da komme nicht weiter
ich will dieses beispiel durchziehn ....trivial erst mal um das dann anzugleichen auf meinen anwendungsfall
dies mal vorrausgesetzt dass die in der zelle erscheinenden zahl im text immer in der gleichen zeile zu finden ist
tatsächlich musst zu allem uebel festellen dass die zal nicht immer in der gleichen zeile von oben nach unten gezählt steht
was dann? vor der zahle steht text der nur jeweil in der gesuchten zeiel steht
er/sie hat xxxx punkte
das steht aber immer an gleicher postition von der letzen zeile aus gerechnet
angenommen es sind 566 zeilen dann steht das in der zeile 564 562 und 560
diese analogie koennte ich nutzen
deine loesung ist ja laut frigo ein guter loesungsansatz mit dem FreeFile
drum wollte dies auch nachvollziehn
wie gesagt mache neuen beitrag ..ich wuerde mich freuen wenn du das anschaust und
den code mit kommentaren versiehst...was wo genau paasiert
die thematik ist fuer mich neues kapitel mit andern geschichten sachen wie textboxen fuellen tabellen anlegen ausblenden usw kome inzwischen klar
grundlegende syntax geschichten habe noch sehr probleme
variaben konstanten ...so z b wann steht was in () oder dahinter hmm
das mit dem eof verhindert dass er ueber das dateiende hinausliest ? oder versucht?
habe zwar hilfe dazu gelesen aberr ehrlich gesagt nicht kapiert:(
so nu bastle ich erst mal ne beispielanwendung und lade in neuem beitrag hoch
ich weiss geht richtung schulung das forum ist eben kein tutorial hmmmm
danke erst mal fuer deine muehe
gruss roland_k
Ps: ich bin wirklich froh ueber jede hilfe, ohen das forum hätte keine chance drum bin ich auch allen dankbar fuer die geduld und die arbeit die damit verbunden ist
Bild

Betrifft: AW: kapiere gar nichts ..trotz hilfe ??
von: andre
Geschrieben am: 25.04.2005 22:33:15
... die 20 soll die Stelle in der Zeile sein, wo die Zahl anfängt. Musst mal abzählen, ist etwas weiter hinten. Die 4 ist die Länge, Deine Zahl hat maximal 4 Stellen? Die Formel muss übrigens so sein: ...=Val(Mid(Textzeile, 20, 4)). Bei dem ganzen Durcheinander war ich auch mal auf dem Holzweg.
Grüße, Andre
Bild

Betrifft: kapiere gar nichts ..trotz hilfe ??
von: roland_k
Geschrieben am: 25.04.2005 03:22:35
hi andre
mein level bedeutet nachvollziehn wenn ein code gestestet und mit ner mappe funkt:
kommentare wären hilfreich....ich meinete nicht meine datei sondern was freefile macht?


Sub Test()
Dim i%, MeineDatei%, Textzeile$
MeineDatei=FreeFile
Range("A1")=Date
'Augen auf, in der nächsten Zeile steht der Dateiname
Open "C:\Anwender\tool1.LST" For Input Access Read As #MeineDatei
Do While Not EOF() MeineDatei 
########hier kommt direckt fehler ...sollte so sein:
EOF(MeineDatei)
Line Input #MeineDatei, Textzeile
i=i+1
If i=456 then Range("B1") = Val(Instr(20,Textzeile,4)) ####was macht die 20  was die 4
If i=567 then Range("C1") = Val(Instr(20,Textzeile,4)) 
If i=655 then Range("D1") = Val(Instr(20,Textzeile,4)) 
Loop
Close #MeineDatei
if i<655 then msgbox "Nur " & i & " Zeilen in C:\Anwender\tool1.LST"
End Sub

ich suchte die richtigen zeilennummern so:
daten.....externe daten importieren....daten importieren
da kommt fenster wo links neben dem text zeilennummern sind
diese muesstend och koreckte zeilennummern in dieser datei sein?
sie datei hate keine zeilenumbrüche aber wohl leerzeilen?
so komme nicht weiter
drum mache neuen beitrag:
eine text datei lade hoch
eine mappe mit schaltbutton
problembeschreibung innerhalb mappe
der beantworter bitte den code in die mappe integrieren
dann sehe nach runterladen was passiert
habe auch mit schrittweise versucht F8 aber auch da komme nicht weiter
ich will dieses beispiel durchziehn ....trivial erst mal um das dann anzugleichen auf meinen anwendungsfall
dies mal vorrausgesetzt dass die in der zelle erscheinenden zahl im text immer in der gleichen zeile zu finden ist
tatsächlich musst zu allem uebel festellen dass die zal nicht immer in der gleichen zeile von oben nach unten gezählt steht
was dann? vor der zahle steht text der nur jeweil in der gesuchten zeiel steht
er/sie hat xxxx punkte
das steht aber immer an gleicher postition von der letzen zeile aus gerechnet
angenommen es sind 566 zeilen dann steht das in der zeile 564 562 und 560
diese analogie koennte ich nutzen
deine loesung ist ja laut frigo ein guter loesungsansatz mit dem FreeFile
drum wollte dies auch nachvollziehn
wie gesagt mache neuen beitrag ..ich wuerde mich freuen wenn du das anschaust und
den code mit kommentaren versiehst...was wo genau paasiert
die thematik ist fuer mich neues kapitel mit andern geschichten sachen wie textboxen fuellen tabellen anlegen ausblenden usw kome inzwischen klar
grundlegende syntax geschichten habe noch sehr probleme
variaben konstanten ...so z b wann steht was in () oder dahinter hmm
das mit dem eof verhindert dass er ueber das dateiende hinausliest ? oder versucht?
habe zwar hilfe dazu gelesen aberr ehrlich gesagt nicht kapiert:(
so nu bastle ich erst mal ne beispielanwendung und lade in neuem beitrag hoch
ich weiss geht richtung schulung das forum ist eben kein tutorial hmmmm
danke erst mal fuer deine muehe
gruss roland_k
Ps: ich bin wirklich froh ueber jede hilfe, ohen das forum hätte keine chance drum bin ich auch allen dankbar fuer die geduld und die arbeit die damit verbunden ist
Bild

Betrifft: AW: aus ner datei .LST text einlesen
von: Frigo
Geschrieben am: 23.04.2005 10:15:49
angenommen, die zahl beginnt immer an der 20. Stelle, so kann der string mit MID ab dieser stelle gelesen werden, die frage ist nur noch, wie viele zeichen gelesen werden müssen.
Dafür kann man ab der 20. Stelle das nächste leerzeichen suchen (mit INSTR). Steht dies dann an der 23. Stelle, dann müssen 23-20=3 Zeichen eingelesen werden.
leerstelle = InStr(20, x, " ")
zahl = Val(Mid(strZeile, 20, leerstelle - 20))
dies mus jetzt immer in die IF-Anweisung rein, also
If i = 456 Then
leerstelle = InStr(20, x, " ")
Sheets(1).Cells(1, 1) = Val(Mid(strZeile, 20, leerstelle - 20))
end if
Frigo
Bild

Betrifft: AW: aus ner datei .LST text einlesen
von: roland_k
Geschrieben am: 23.04.2005 11:48:33
hm sorry habe eins zu weit oben beantwortet (((
Bild

Betrifft: hm da versteh nur bahnhof
von: roland_k
Geschrieben am: 24.04.2005 00:47:56
hoi ihr zwei..
nu bin ganz draus ....val? wo eie einbauen
sollte irgendwei ne anwendung haben zum nachvollziehn
scheu mir das aber nochmal an
danke erst mal
gruss roland_k
 Bild

Beiträge aus den Excel-Beispielen zum Thema "aus ner datei .LST text einlesen"