Csv Datei Tonerwerte prüfen und unter 30 Prozent Emailmeldung
Hallo,
Ich habe eine Tabelle genannt Toner.csv die so aus sieht:
Device,Serial Number,Location,Toner Level / Black,Toner Level / Cyan,Toner Level / Magenta,Toner Level / Yellow,
FS-1118MFP,XLK5505XXX,," 6%",,,,
TASKalfa 300ci,QJE8Z00XXX,," 22%"," 37%"," 39%"," 39%",
FS-3900DN,XLN6Z39XXX,," 25%",,,,
Canon iR-ADV C5030,ETF01XXX,," 56%"," 31%"," 31%"," 25%",
Einmal am Tag erhalte ich eine neue Tabelle wo ich im Prinzip immer per Hand kontrolliere, welche Maschine unter 30% Toner hat.
Dementsprechend bestelle ich den Toner und notiere mir das in einer Liste.
Am nächsten Tag das gleiche spielchen wieder von vorn mit einer aktuellen csv nur muß ich dabei jedes mal an die Maschinen denken für die ich bereits einen Toner bestellt habe.
Diesen Vorgang würde ich gerne automatisieren,
so dass ich die Datei nur quasi "einlesen" muß und ein Script/programm das kontrolliert und mich dementsprechend via Email benachrichtigt ob ein Wert unter 30% ist und wenn ja welche Maschine/Toner genau.
Da einmal am Tag eine aktuelle Toner.csv eingelesen werden soll, sollte ich keine Email von einer Maschine bekommen die am Vortag schon gemeldet wurde.
Jedoch sobald der Wert wieder über 90% ist,darf mir wieder bez. dieser Maschine eine Email geschickt werden.
Ist sowas irgendwie realisierbar? Ich habe null Plan wie ich das umsetzen könnte.
Bin für jede Hilfe dankbar.
kind regards
LordKingPin
Ich habe eine Tabelle genannt Toner.csv die so aus sieht:
Device,Serial Number,Location,Toner Level / Black,Toner Level / Cyan,Toner Level / Magenta,Toner Level / Yellow,
FS-1118MFP,XLK5505XXX,," 6%",,,,
TASKalfa 300ci,QJE8Z00XXX,," 22%"," 37%"," 39%"," 39%",
FS-3900DN,XLN6Z39XXX,," 25%",,,,
Canon iR-ADV C5030,ETF01XXX,," 56%"," 31%"," 31%"," 25%",
Einmal am Tag erhalte ich eine neue Tabelle wo ich im Prinzip immer per Hand kontrolliere, welche Maschine unter 30% Toner hat.
Dementsprechend bestelle ich den Toner und notiere mir das in einer Liste.
Am nächsten Tag das gleiche spielchen wieder von vorn mit einer aktuellen csv nur muß ich dabei jedes mal an die Maschinen denken für die ich bereits einen Toner bestellt habe.
Diesen Vorgang würde ich gerne automatisieren,
so dass ich die Datei nur quasi "einlesen" muß und ein Script/programm das kontrolliert und mich dementsprechend via Email benachrichtigt ob ein Wert unter 30% ist und wenn ja welche Maschine/Toner genau.
Da einmal am Tag eine aktuelle Toner.csv eingelesen werden soll, sollte ich keine Email von einer Maschine bekommen die am Vortag schon gemeldet wurde.
Jedoch sobald der Wert wieder über 90% ist,darf mir wieder bez. dieser Maschine eine Email geschickt werden.
Ist sowas irgendwie realisierbar? Ich habe null Plan wie ich das umsetzen könnte.
Bin für jede Hilfe dankbar.
kind regards
LordKingPin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 147079
Url: https://administrator.de/contentid/147079
Ausgedruckt am: 17.11.2024 um 09:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo LordKingPin!
Nicht zuletzt aufgrund der Formatierung der Tonerwerte (Anführungs- und Prozentzeichen) würde ich in diesem Fall zu VBS greifen - etwa so:
Die vorletzte Zeile dient nur als Demo; hier würde sich - je nach verwendetem Mailer - ev anbieten, den Inhalt der Variablen "Mail" in eine weitere Textdatei zu schreiben ...
Grüße
bastla
Nicht zuletzt aufgrund der Formatierung der Tonerwerte (Anführungs- und Prozentzeichen) würde ich in diesem Fall zu VBS greifen - etwa so:
Toner = "D:\Toner.csv"
Bestellt = "D:\Bestellt.txt"
Bestellen = 30 'Grenzwert für Nachbestellung
Geliefert = 90 'Grenzwert für "wieder da"
Set fso = CreateObject("Scripting.FileSystemObject")
T = Split(fso.OpenTextFile(Toner).ReadAll, vbCrLf) 'Toner-Datei einlesen und zeilenweise in Array schreiben
Header = Split(T(0), ",") 'Spaltenüberschriften (Toner-Bezeichnung) einlesen
If fso.FileExists(Bestellt) Then 'Wenn Bestelllisten-Datei vorhanden, ...
Set Best = fso.OpenTextFile(Bestellt, 1, True)
If Not Best.AtEndOfStream Then B = Best.ReadAll '... gesamte Bestellliste aus Datei lesen
Best.Close
End If
If B = "" Then B = vbCrLf 'Formatierung für Vergleich anpassen
Mail = "" 'Variable für Mailtext
For i = 1 To UBound(T) 'alle Druckerdatensätze (= ab Zeile 2 der .csv) durchgehen
PrinterData = Split(T(i), ",") 'Datensatz des Druckers in Felder zerlegen
Info = PrinterData(0) & "," & PrinterData(1) 'Drucker-Daten ("Device" und "Serial") in Variable schreiben
For j = 3 To 6 'Felder mit Toner-Info durchgehen
If InStr(PrinterData(j), "%") > 0 Then 'Prozentsatz vorhanden?
Wert = CInt(Replace(Replace(PrinterData(j), "%", ""), """", "")) 'Prozentwert als Zahl ermitteln
TonerDaten = Info & "," & Header(j) 'Daten für Toner zusammenstellen (Drucker-Daten + Toner-Name lt Spaltenüberschrift)
If Wert < Bestellen And InStr(B, TonerDaten) = 0 Then 'Grenzwert unterschritten und noch nicht in Liste?
Mail = Mail & vbCrLf & TonerDaten 'in Mailtext ...
B = B & vbCrLf & TonerDaten '... und Bestellliste aufnehmen
End If
If Wert > Geliefert Then 'Grenzwert für "wieder da" überschritten?
B = Replace(B, vbCrLf & TonerDaten, "") 'aus Bestellliste entfernen
End If
End If
Next 'Feld
Next 'Satz
fso.CreateTextFile(Bestellt).Write B 'Bestellliste in Datei schreiben
If Mail <> "" Then
WScript.Echo "Mail mit Inhalt:" & vbCrLf & vbCrLf & Mail & vbCrLf & vbCrLf & "versenden!"
End If
Grüße
bastla