VB + VBS um Email in Txt zu speicher, auszuwerten und Aktion auszulösen.
Hallo zusammen.
ich sitze gerade an folgendem "Problem"
Ich habe eine Standardisierte Email welche per Regel ein VBA Script auslöst, welches eine TXT erstellt und anschließende ein VBS Script startet. (das funktioniert schon mal)
Das VBS soll nun die TXT auf einen String durchsuchen und bei Erfolg nochmals nach einen weiteren String suchen. (das funktioniert ebenfalls schon) nun will ich aber, dass das Script nach dem zweiten gefundenen String bis zum nächsten Koma den Text in eine Variable speichert. (die benötige ich später um ein Event auszulösen)
Ich hoffe mal es kann mir wer helfen.
Den VBA Teil schenken wir uns mal und der derzeitige VBS Script sieht so aus:
Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Kryptik")>0 then
'MsgBox "Kryptik gefunden"
Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Clientlist: SERVER / ")>0 then
MsgBox "HIER SOLLTE NUN DER TEIL MIT DEM SPEICHERN DES TEXTTEILS FOLGEN"
End if
wend
End if
wend
_____________________________________________
Die Testdatei kann ich aus Sicherheitsgründen nur ungern posten. Aber wie gesagt es gibt den String: "Clientlist: SERVER / " darauf folgt dann ein Client Name welcher mit einen Komma beendet wird. Diesen brauche ich in einer Variable.
Danke schon mal für die Hilfe!
mfg Rob
ich sitze gerade an folgendem "Problem"
Ich habe eine Standardisierte Email welche per Regel ein VBA Script auslöst, welches eine TXT erstellt und anschließende ein VBS Script startet. (das funktioniert schon mal)
Das VBS soll nun die TXT auf einen String durchsuchen und bei Erfolg nochmals nach einen weiteren String suchen. (das funktioniert ebenfalls schon) nun will ich aber, dass das Script nach dem zweiten gefundenen String bis zum nächsten Koma den Text in eine Variable speichert. (die benötige ich später um ein Event auszulösen)
Ich hoffe mal es kann mir wer helfen.
Den VBA Teil schenken wir uns mal und der derzeitige VBS Script sieht so aus:
Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Kryptik")>0 then
'MsgBox "Kryptik gefunden"
Set fso=CreateObject("Scripting.FileSystemObject")
Set oSourcefile = fso.OpenTextFile("C:\PFAD\DATEI.txt")
while not oSourcefile.AtEndOfStream
sTemp = oSourcefile.ReadLine
If Instr(sTemp,"Clientlist: SERVER / ")>0 then
MsgBox "HIER SOLLTE NUN DER TEIL MIT DEM SPEICHERN DES TEXTTEILS FOLGEN"
End if
wend
End if
wend
_____________________________________________
Die Testdatei kann ich aus Sicherheitsgründen nur ungern posten. Aber wie gesagt es gibt den String: "Clientlist: SERVER / " darauf folgt dann ein Client Name welcher mit einen Komma beendet wird. Diesen brauche ich in einer Variable.
Danke schon mal für die Hilfe!
mfg Rob
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 248907
Url: https://administrator.de/forum/vb-vbs-um-email-in-txt-zu-speicher-auszuwerten-und-aktion-auszuloesen-248907.html
Ausgedruckt am: 24.12.2024 um 03:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo Rob, Willkommen auf Administrator.de!
Hab's dir etwas mit Regular Expressions optimiert (ist schneller als jedes mal Zeile für Zeile durchzugehen )
Grüße Uwe
Hab's dir etwas mit Regular Expressions optimiert (ist schneller als jedes mal Zeile für Zeile durchzugehen )
Dim strClientname, fso, regex, strContent, matches
Set fso=CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("vbscript.regexp")
regex.IgnoreCase = True
regex.Pattern = "Kryptik"
strContent = fso.OpenTextFile("C:\PFAD\DATEI.txt").ReadAll()
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
regex.Pattern = "Clientlist: SERVER / ([^,\r\n]+)"
Set matches = regex.Execute(strContent)
If matches.Count > 0 Then
strClientname = Trim(matches(0).submatches(0))
msgbox strClientname
End If
End If
Zitat von @Borob14:
Eine letzte Frage hätte ich noch: Ich will ja auch dazu lernen -> ([^,\r\n]+) -> kannst du mir den Syntax erklären
bzw. ne empfehlenswerte Seite nennen?
Klar: Regular Expressions TutorialEine letzte Frage hätte ich noch: Ich will ja auch dazu lernen -> ([^,\r\n]+) -> kannst du mir den Syntax erklären
bzw. ne empfehlenswerte Seite nennen?
[^,\r\n]+
Match a single character NOT present in the list below «[^,\r\n]+»
Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
The character “,” «,»
A carriage return character «\r»
A line feed character «\n»