-> Hier kostenlos registrieren
Hallo zusammen.
Ich habe ein Problem mit einem Script, wo ich aktuell nicht weiter kommen.
Es soll eine CSV Datei ausgelesen und die Einträge gefiltert werden und als HTML Datei gespeichert werden.
Das Funktioniert soweit auch alles. Allerdings habe ichfolgenden Fehler:
Der Code sieht wie folgt aus:
Zeile 47 lautet: strMonth = Mid(arrData(1),5,2)
Die CSV:
Der Header wird Ordnungsgemäß übersprungen, sodass in arrData(1) auch 21.01.2024 14:45:35 steht. Das String zerlegen für Monat und Jahr funktioniert auch alles super. Nur weiß ich gerade nicht wo die Fehlermeldung herkommt.
Der HTML Tabellenbereich ist noch nicht fertig, dass ergänze ich noch.
Vielleicht sieht ja einer von euch auf Anhieb den Fehler.
Danke und schönen Sonntag noch
Ich habe ein Problem mit einem Script, wo ich aktuell nicht weiter kommen.
Es soll eine CSV Datei ausgelesen und die Einträge gefiltert werden und als HTML Datei gespeichert werden.
Das Funktioniert soweit auch alles. Allerdings habe ichfolgenden Fehler:
Der Code sieht wie folgt aus:
Code:
Sub VBFunktion_1()
'Tip:
' 1. Verwenden Sie die Tastenkombination <CTRL+SPACE> oder <CTRL+I>, um eine Liste aller Objekte und Funktionen zu öffnen
' 2. Schreiben Sie den Code unter Verwendung des HMI Runtime Objekts.
' Beispiel: HmiRuntime.Screens("Screen_1").
' 3. Verwenden Sie die Tastenkombination <CTRL+J>, um eine Objektreferenz zu erstellen.
'Schreiben Sie den Code ab dieser Position:
Dim objFSO, objCSV, objoutHTML, wholeLine, mArray, blnFirstRow
Dim arrHeader, arrData
Dim strHeaderLine, strHeader, strDataLine,strMonth, strYear, strFilterYear
Const ForReading = 1
Const ForWriting = 2
strFilterYear = SmartTags("Archiv_Jahr")
' Die CSV-Datei öffnen
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objCSV = objFSO.OpenTextFile("C:\Storage Card SD\Logs\test.csv", ForReading) ' Eingabedatei
Set objoutHTML = objFSO.CreateTextFile("C:\Storage Card SD\Logs\test.html", ForWriting) ' Ausgabedatei
If Err.Number <> 0 Then
ShowSystemAlarm "Error #" & CStr(Err.Number) & "" & Err.Description
Err.Clear
Exit Sub
End If
' HTML-Header schreiben
objoutHTML.WriteLine "<!DOCTYPE html>"
objoutHTML.WriteLine "<html>"
objoutHTML.WriteLine "<head>"
objoutHTML.WriteLine "<title>Gefilterte Daten</title>"
objoutHTML.WriteLine "</head>"
objoutHTML.WriteLine "<body>"
objoutHTML.WriteLine "<table>"
objCSV.SkipLine 'Header überspringen
' Die Datensätze lesen und nach Datum filtern
Do Until objCSV.AtEndOfStream
' Datensatz lesen
strDataLine = objCSV.ReadLine
arrData = Split(strDataLine, ";")
' Datum aus dem Datensatz extrahieren
strMonth = Mid(arrData(1),5,2)
strYear = Mid(arrData(1),8,4)
' Monatszahl in Text umwandeln
Select Case strMonth
Case 01 strMonth = "Januar"
Case 02 strMonth = "Februar"
Case 03 strMonth = "März"
Case 04 strMonth = "April"
Case 05 strMonth = "Mai"
Case 06 strMonth = "Juni"
Case 07 strMonth = "Juli"
Case 08 strMonth = "August"
Case 09 strMonth = "September"
Case 10 strMonth = "Oktober"
Case 11 strMonth = "November"
Case 12 strMonth = "Dezember"
End Select
' Datensatz filtern
If strYear = SmartTags("Archiv_Jahr") Then
objoutHTML.WriteLine arrData(1)&" <tr><td>"& strMonth & " - "& arrData(2) &"Kg</td></tr>"
End If
Loop
' Tabellenende und HTML-Footer schreiben
objoutHTML.WriteLine "</table>"
objoutHTML.WriteLine "</body>"
objoutHTML.WriteLine "</html>"
' Die Dateien schließen
objCSV.Close
objoutHTML.Close
End Sub
Zeile 47 lautet: strMonth = Mid(arrData(1),5,2)
Die CSV:
Code:
"VarName";"TimeString";"VarValue";"Validity";"Time_ms"
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.01.2024 14:45:35";123;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.02.2024 14:45:35";239;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.03.2024 14:45:35";100;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.04.2024 14:45:35";110;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.05.2024 14:45:35";111;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.06.2024 14:45:35";124;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.07.2024 14:45:35";184;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.08.2024 14:45:35";210;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.09.2024 14:45:35";198;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.10.2024 14:45:35";178;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.11.2024 14:45:35";168;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.12.2024 14:45:35";159;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.01.2025 14:45:35";163;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.02.2025 14:45:35";198;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.03.2025 14:45:35";189;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.04.2025 14:45:35";160;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.05.2025 14:45:35";170;1;45464614985,7523
"Anlage_iDB_Transport_Summe Monat_Archiv";"21.06.2025 14:45:35";159;1;45464614985,7523
Der Header wird Ordnungsgemäß übersprungen, sodass in arrData(1) auch 21.01.2024 14:45:35 steht. Das String zerlegen für Monat und Jahr funktioniert auch alles super. Nur weiß ich gerade nicht wo die Fehlermeldung herkommt.
Der HTML Tabellenbereich ist noch nicht fertig, dass ergänze ich noch.
Vielleicht sieht ja einer von euch auf Anhieb den Fehler.
Danke und schönen Sonntag noch