TIA Zeilenweise aus Excel auslesen VB - Script

DocSchmid

Level-1
Beiträge
18
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Tasten-Heros,

ich habe da mal ein Problem für die Community:

Ich habe einen Kunden-Code, mit dem ich ein Alarmarchiv auslesen soll. Bisher haben wir das auch mit diesem Code
machen können, als wir noch ein TP 1200 Comfort eingesetzt haben. Dieser Code liest die Fehlermeldungen zu einem
zeitlich begrenzen Maschinenpozess aus, damit man feststellen kann welche Fehler bei welchem Prozess bzw. in welchem
Zeitraum aufgetreten sind.

Jetzt möchte der Kunde die Anlage auf einen IPC277E umrüsten und da funktionieren die Scripte welche auf files zugreifen
bekanntlich etwas anders. Ich habe noch andere Baustellen an diesem Projekt gehabt und mich erst gestern genauer mit der
Problematik beschäftigt. Was das Scripting angeht bin ich noch ein Frischling und hoffe auf Unterstützung :ROFLMAO:

Bisher wurde das Alarmarchiv Zeilenweise ausgelesen und mit verschiedenen Operationen auf die Zeiteinheiten heruntergebrochen.
Momentan tue ich mich schwer eine ähnliche Herangehensweise zurecht zubauen, da ich mich eben mit der Syntax noch nicht genauer
auskenne. Kann man diesen Code unter Windows noch so anwenden oder muss ich mir was anderes einfallen lassen?

Das Projekt läuft unter V15.1 und darf nicht hochgezogen werden. Verwendete CPU ist eine 1511C 1-PN

Danke für eure Unterstützung!

Beste Grüße Doc
 

Anhänge

  • 2021_03_18_Code.txt
    5,1 KB · Aufrufe: 29
Zuviel Werbung?
-> Hier kostenlos registrieren
Was das Scripting angeht bin ich noch ein Frischling und hoffe auf Unterstützung :ROFLMAO:
Sorry, off topic.
Ich weiss nur, dass VBS so manches nicht kann, was ich von VBA gewöhnt bin.
Das Konglomerat von Vergleichen in Deiner txt-Datei finde ich sooo fürchterlich unübersichtlich, dass ich mich trotzdem melde.
Anbei, in VBA angedacht, wie ich die Zerlegung der "Datümer"+Zeiten und die Vergleiche der Werte angehen würde:

Code:
' ...

Temp = SmartTags("Chargenausdruck_Start")
Temp = CuReplac(Temp, "0123456789", " ") ' replaces all characters in Temp by space, that are not contained in "0123456789"
Field = Split(Temp, " ")
xDateTimeBeg = [B]DateSerial[/B](Field(2), Field(1), Field(0)) + [B]TimeSerial[/B](Field(3), Field(4), Field(5))
Set Field = Nothing

' ...

Temp = SmartTags("Chargenausdruck_Stop")
Temp = CuReplac(Temp, "0123456789", " ") ' replaces all characters in Temp by space, that are not contained in "0123456789"
Field = Split(Temp, " ")
xDateTimeEnd = [B]DateSerial[/B](Field(2), Field(1), Field(0)) + [B]TimeSerial[/B](Field(3), Field(4), Field(5))
Set Field = Nothing

' ...

i = 0
'DO LOOP UNTIL END OF FILE IS REACHED
Do While f.EOF = False

' ...
    
    '        L = Left(Field(13), 20)
    '
    '        'TO ELIMINATE THE " SYMBOL, WE USE THE COMMAND "Right".
    '        'SO WE ARE RECORDING 19 SYMBOLS OUT OF THE "L" VARIABLE, THE STEP BEFORE. STARTING FROM THE RIGHT SIDE.
    '        'THE RESULT IS: 26.03.2020 16:11:26
    '        'THIS INFORMATION CONTAINS 19 SYMBOLS WITHOUT THE " SYMBOL
    '        r = Right(L, 19)
    '        SmartTags("Chargenausdruck_Datum") = r
' >>>===>    e r s e t z e n   d u r c h   f o l g e n d e n   E i n Z e i l e r :
    SmartTags("Chargenausdruck_Datum") = [B]Mid[/B](Field(13), 2, 19) ' EXTRACTS 19 CHARACTERS BEGINNING WITH THE SECOND

    Temp = SmartTags("Chargenausdruck_Datum")
    Temp = CuReplac(Temp, "0123456789", " ") ' replaces all characters in Temp by space, that are not contained in "0123456789"
    Field = Split(Temp, " ")
    xDateTimeTst = [B]DateSerial[/B](Field(2), Field(1), Field(0)) + [B]TimeSerial[/B](Field(3), Field(4), Field(5))
    Set Field = Nothing

    If xDateTimeBeg <= xDateTimeTst And xDateTimeTst <= xDateTimeEnd Then i = i + 1
Loop
SmartTags("Chargenausdruck_Einträge") = i

' ...

' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Function CuReplac(ByVal txt As String, ByVal xo As String, ByVal xn As String) As String
'   replaces all characters in txt by xn that are NOT contained in list xo
Dim xT As String, xP As Long
xT = txt
xP = 1
Do While xP <= Len(xT)
    If InStr(xo, Mid(xT, xP, 1)) = 0 Then
        xT = Left(xT, xP - 1) & xn & Mid(xT, xP + 1)
        xP = xP + Len(xn)
    Else
        xP = xP + 1
        End If
    Loop
CuReplac = xT
End Function
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Häwenaissuiikend!
 
Zuletzt bearbeitet:
Zurück
Oben