catapilla
Goto Top

VBscript! suchen in txt datei

Hallo zusammen,

habe ein Problem das ich nicht lösen kann, deswegen wende ich mich hoffnungsvoll an euch;)

So hier mal die Situtations Beschreibung:

Ich habe Telefonbuch in Form einer Txt Datei mit dem Aufbau:

NST Name Abteilung Raum

123 musterman, max Verkauf K1.11
usw. usw. usw. usw.


ich möchte nun ein VBscripten, dass nach Eingabe Eins der 4 Attribute die anderen ausgibt.

Wenn ich jetzt z.B Hans in die Inputbox eingebe, soll mir das Script alle Einträge aus der txt Datei wiedergeben in dem hans vorkommt. Natürlich soll die Ausgabe alle 4 Attribute wiedergeben.


Mein Problem ist jetzt, dass ich es nicht schaffe die Eingabe zuprüfen ob ein Eintrag in der txt Datei steht.


hier mal meine ersten Schritte:

Dim strSourceFile, objFSO,gucker, Eingabe
strSourceFile = "F:\Newfolder\phonelist.txt"  

set objFSO = CreateObject("Scripting.FileSystemObject")  
gucker = objFSO.OpenTextFile(strSourceFile, 1).ReadAll

Eingabe= InputBox("Suchwort: ")  
.
.
.


Soweit so gut ..... wenn ich jetzt "gucker" ausgebe, habe ich alle Einträge aus der txt Datei.

Danke schon mal im vorraus für hilfreichen Input;)

Content-Key: 192542

Url: https://administrator.de/contentid/192542

Printed on: April 19, 2024 at 07:04 o'clock

Member: MonoTone
MonoTone Oct 10, 2012 at 14:05:05 (UTC)
Goto Top
Hi

schau mal das hier an:
Dim strSourceFile, objFSO,gucker, Eingabe
strSourceFile = "D:\test.txt"  
Dim fs, row, hits, caseSense
set objFSO = CreateObject("Scripting.FileSystemObject")  
Set fs = objFSO.OpenTextFile(strSourceFile, 1)
row  = 0
hits = 0
Eingabe = InputBox("Suchwort..")  
caseSense = MsgBox("Soll die Suche Casesensitiv sein?",4 ,"Suchoption")  
If caseSense <> 6 Then Eingabe = LCase(Eingabe)
Do Until fs.AtEndOfStream
row = row + 1
gucker = fs.ReadLine
If caseSense <> 6 Then gucker = LCase(gucker)
If InStr(gucker, Eingabe) Then
 MsgBox "Treffer in Zeile: " & row & VbCrLf & gucker  
 hits = hits + 1 
End If


Loop
If hits = 0 Then MsgBox "Keine Treffer"  

Ist nur als Beispiel gedacht, von welchem aus du deine Lösung ableiten können wirst.
Member: TsukiSan
TsukiSan Oct 11, 2012 at 06:30:15 (UTC)
Goto Top
Hallo Catapilla,

Möglichkeiten gibt es einige. MonoTone hat Eine aufgezeigt.
Wenn du dein Script nur ergänzen möchtest dann ginge auch
folgendes:
Dim strSourceFile, objFSO,gucker, Eingabe, Ausgabe
strSourceFile = "D:\phonelist.txt"  

set objFSO = CreateObject("Scripting.FileSystemObject")  
gucker = Split(objFSO.OpenTextFile(strSourceFile, 1).ReadAll,vbcrlf)

Eingabe= InputBox("Suchwort: ")  
For i = 0 to Ubound(Gucker)
	if Instr(LCase(Gucker(i)),LCase(Eingabe)) then
		Ausgabe = Ausgabe & "Zeile:" & (i+1) & gucker(i) & vbcrlf  
	end if
Next

msgbox Ausgabe

Gruss
Tsuki
Member: Catapilla
Catapilla Oct 11, 2012 at 09:05:41 (UTC)
Goto Top
Hey vielen Dank für euere Hilfeface-smile

hab mir jetzt ein lauffähiges Script zusammen gebastelt.

Hab da aber noch eine Frage.

Ist die Ausgabe mit einer MsgBox auf 13 Zeilen begrenzt?

wenn ich jetzt z.B "verkauf" eingebe gibt mir die MsgBox nur die ersten 13 aus.. und der rest fällt wegface-sad

was kann ich da tun?
Member: TsukiSan
TsukiSan Oct 11, 2012 updated at 10:13:17 (UTC)
Goto Top
Ist die Ausgabe mit einer MsgBox auf 13 Zeilen begrenzt?
Das wär' mir neu!
Das muss an etwas anderen liegen!

Bastell dir doch mal eine Test-Datei mit jeder Menge den gleichen Namen/Wörtern pro Zeile. Da wird die Messagebox dann ganz schön "gross"!

Gruss
Tsuki

Ps.: Wie sieht denn dein fertiges Script aus?
Member: Catapilla
Catapilla Oct 11, 2012 updated at 13:31:37 (UTC)
Goto Top
So wenn ich die Ausgabe mit MsgBox tätige bekomm ich nur 13 Zeilen ?!

Wenn ich aber die Ausgabe mit WScript.Echo tätige bekomm ich eine "laange" Liste.

Gibt es Noch andere Methoden um die Ausgabe zu machen?

hier mal mein Script:

Option Explicit
'On Error Resume next  


Dim strSourceFile, objFSO,gucker, Eingabe 
Dim fs, row, hits, ausgabe, i
Dim temp(600) 

strSourceFile = "F:\Newfolder\phonelist.txt"   
row  = 0 
hits = 0 

set objFSO = CreateObject("Scripting.FileSystemObject")   
Set fs = objFSO.OpenTextFile(strSourceFile, 1) 


Eingabe = InputBox("Suchwort: " &vbCr& vbCr&  "NST" & "  oder  " & "Namen" & "  oder  " &  "Abteilung" & "  oder  " & "Raum" , "Telefonbuch" )   
Eingabe = LCase(Eingabe) 


Do Until fs.AtEndOfStream 

	row = row + 1 

	gucker = fs.ReadLine 
	gucker = LCase(gucker)

		If InStr(gucker, Eingabe) Then 

			temp(hits)= gucker 
			hits = hits + 1

		End If 

Loop
 
	For i=0 To hits
		ausgabe=ausgabe & temp(i) & vbnewline
	Next

'WScript.Echo ausgabe  
MsgBox ausgabe
 
If hits = 0 Then MsgBox "Keine Treffer"  
Member: TsukiSan
TsukiSan Oct 12, 2012 at 00:36:45 (UTC)
Goto Top
Mh, da muss ich passen!
Wenn ich mit msgbox oder Wscript.echo eine Testdatei auslese und
viele viele Zeilen anzeigen lasse, dann sind das weit aus mehr aqls nur 13 Zeilen!
Den OK-Knopf sehe ich dann gar nicht mehr.

Also ich weiss es nicht, was es bei dir auf 13Zeilen begrenzt.

Viele Grüße

Tsuki
Member: Catapilla
Catapilla Oct 12, 2012 at 08:27:04 (UTC)
Goto Top
ahh ok trozdem Danke

mal sehen die Ausgabe über eine msgBox ist sowieso keine so schöne Sache.

Das bekomm ich bestimmt noch anders hinface-smile