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-ID: 192542

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

Ausgedruckt am: 15.11.2024 um 21:11 Uhr

MonoTone
MonoTone 10.10.2012 um 16:05:05 Uhr
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.
TsukiSan
TsukiSan 11.10.2012 um 08:30:15 Uhr
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
Catapilla
Catapilla 11.10.2012 um 11:05:41 Uhr
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?
TsukiSan
TsukiSan 11.10.2012 aktualisiert um 12:13:17 Uhr
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?
Catapilla
Catapilla 11.10.2012 aktualisiert um 15:31:37 Uhr
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"  
TsukiSan
TsukiSan 12.10.2012 um 02:36:45 Uhr
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
Catapilla
Catapilla 12.10.2012 um 10:27:04 Uhr
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