WinCC VBA Skript kennt Befehle nicht

kapo666

Level-1
Beiträge
157
Reaktionspunkte
20
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebes Forum,

ich habe WinCC flexible 2008 und Runtime SP3, V1.4.0.0_1.16.0.16

ich habe mir ein kleines Skript zusammengeschrieben um TXT-Files zu verarbeiten und verschiedene Werte in interne Variablen abzuspeichern.
Es funktioniert soweit recht gut.
Daraufhin wollte ich ein paar spielerein einbauen...MessageBox, ErrorHandling und so weiter.

Jedoch stehe ich jetzt vor dem Problem, dass anscheinend gewisse Anweisungen nicht verarbeitet werden können.
Manche Anweisungen sind rot bzw. blau unterstrichen. Bei der As-Klausel wird das "As" rot unterstrichen und die MsgBox ist blau unterstrichen.

Es wird auch die Sprungmarke der Goto-Funktion nicht als Sprungmarke erkannt und ist rot unterstrichen

Die Syntax müsste eigentlich stimmen.
Code:
[

Dim oldPath As String

MsgBox ("Fehler")

On Error Goto errhandl


errhandl: 

/CODE]

Gibt es da Probleme mit der Version oder habe ich etwas vergessen aufzurufen?

mfg
Kapo
 
Guten Morgen, mittels der SuFu kommt folgendes:
http://www.sps-forum.de/hmi/68695-abfragebox-bei-wincc-flexible-2008-a.html

Daraus der 2. Beitrag:

Hallo,
eine MessageBox, wie du sie ggf. von MS kennst hat Flex nicht. Das Einzige, was du aus meiner Sicht machen kannst ist mit der Taste z.B. einen Merker setzen, der macht ein weiteres Bildobjekt sichtbar, z.B. einen (oder 2) zusätzliche Button und der Ja-Button würde dann die Funktion ausführen, der Nein-Button einfach nur die Sichtbarkeit zurücksezten ...
Deiner weiteren gestalterischen Fantasie sind hier natürlich keine Grenzen gesetzt (vielleicht machst du das sogar als Bildbaustein).

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo kapo,

WinCC flex und Comfort/Advanced können nur einen eingeschränkten Befehlssatz von VBS (nicht VBA), eine MessageBox und ErrorHandling gehören nicht dazu.

Gruß, Fred
 
Mit Hilfe eines Skiptes lassen sich unter WinCC flexible aber dennoch einfache Pop-Fenster im Windows-Stile erzeugen und die gedrückten Tasten auswerten.

Code:
'title: PopUp Fenster'owner: 
'date: 01.02.2011
'purpose:   
' Zeigt eine Meldung in einem Dialogfeld an, wartet darauf, dass der Benutzer auf eine Schaltfläche klickt,
' und gibt einen Wert zurück, der anzeigt, auf welche Schaltfläche geklickt wurde.
'
'Syntax
' intButton = MyShellObject.Popup(strText,[nSecondsToWait],[strTitle],[nType]) 
'
'Arguments
' strText : String, für den Text in der Pop-UP Box
'
' nSecondsToWait : Zeit in Sekunden wie lange die Box angezeigt wird ohne
' das der Anwender auf einen Button klickt
' (Optionale Angabe, default = unbegrenzt)
'
' strTitle : String, für die überschrifte der Pop Up Box (Optional) 
'
' nType : Welche Buttons und Info-Icons angezeigt werden (Optional, Zahl)
'
' IntButton : Rückgabewert der MsgBox welcher Button gedrückt wurde (Integer Wert) 
'
'Hier sind die Tabellen für die meisten einstellungen
'
'Button Typ
'
' Wert Beschreibung 
' 0 Nur OK
' 1 OK und Abbrechen 
' 2 Abbruch, Wiederholen und Ignorieren 
' 3 Ja, Nein und Abbrechen
' 4 Ja und Nein
' 5 Wiederholen und Abbrechen 
' 
'Icon Typ
' 
' Wert Beschreibung 
' 16 Stop (Meldung für kritische Fehler) 
' 32 Warnung mit Abfrage
' 48 Warnung 
' 64 Informationsmeldung
'
'Rückgabe der betätigten Button's
'
' Wert Beschreibung 
' -1 kein Button wurde betätigt, Eingabezeit abgelaufen
' 1 OK 
' 2 Abbrechen 
' 3 Abruch
' 4 Wiederholen 
' 5 Ignorieren 
' 6 Ja 
' 7 Nein
'
' 4096 = nicht schliessbar...


Dim Obj, PopUpErgebnis, Titel, Meldetext, ButtonType, IconType


Titel= "Titel"
Meldetext = "Text"
ButtonType = 4
IconType = 64


' Pop up
Set Obj = CreateObject("WScript.Shell")
PopUpErgebnis = Obj.Popup (Meldetext,-1 , Titel, ButtonType + IconType + 4096)
If PopUpErgebnis = 6 Then 
                ShowSystemAlarm("Ja gedrückt...")
End If
If PopUpErgebnis = 7 Then 
                ShowSystemAlarm("Nein gedrückt...")
End If 
                
Set Obj=Nothing
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Muss halt beachtet werden dass Dinge wie MyShellObject.Popup die komplette Scripting-Runtime blockieren, so lange sie auf Antwort warten. Auch wenn's den nSecondsToWait-Parameter gibt, laufen sonst erst mal keine Skripte mehr.
Ist also mit Vorsicht zu genießen.

War laut Siemens auch einer der Hauptgründe warum MsgBox nicht integriert wurde.
 
Hallo Gemeinde,

die Krücke scheint bei den "neuen Comfort" Panel nicht mehr zu funktionieren.

Code:
Dim Obj, PopUpErgebnis, Titel, Meldetext, ButtonType, IconType

Titel= "Titel"
Meldetext = "Text"
ButtonType = 4
IconType = 64

' Pop up
Set Obj = CreateObject("WScript.Shell")
PopUpErgebnis = Obj.Popup (Meldetext,-1 , Titel, ButtonType + IconType + 4096)
If PopUpErgebnis = 6 Then 
 ShowSystemAlarm("Ja gedrückt...")
End If
If PopUpErgebnis = 7 Then 
 ShowSystemAlarm("Nein gedrückt...")
End If 

If Err.Number <> 0 Then
 ShowSystemAlarm Err.Number & " " & Err.Description
End If

Ausgabe der Fehlerauswertung:
  • Fehler 'ActiveXcomponent can't create object: 'WScript.Shell'' in Script ...
  • 424 Object required


Panel TP700 Comfort
Runtime V13.0.1.4
TIA Portal V13 SP1 Upd 4


Lösungen?


Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die "Krücke" funktioniert nicht, weil es das "WScript.Shell"-Objekt nur gibt, wenn die WinCC flexible Runtime auf einem PC mit Windows XP/Vista/7... läuft. Jedoch nicht auf Panels mit Windows CE, Linux, ...

Das Skript könnte funktionieren, wenn Du das TP700 in TIA ES simulierst, weil die RT-Simulation dann unter Deinem Windows läuft. Nützt allerdings nichts, da es auf dem Panel ja nicht geht.

Harald
 
Zurück
Oben