C Script mit VBA auslesen

??? Apfelkompott aus Birnen machen ?

Aus der Frage werde ich nicht schlau - was hast du vor ?
In jedem Fall : VBA kann mit C (egal welche Form davon) nichts anfangen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also es geht hier nicht um die Runtime. Es geht um Prokjetieren im Grafics Designer
Ich habe mehrere Bilder mit ca 60 Objekten pro Bild. An allen Objekten ist hinter dem Ereigniss Mausklick eine C Aktion hinterlegt die einen Bildwechsel macht.
Den C Code dieser Aktion möchte ich mit VBA auslesen.

In der Hilfe von WinCC gibts ja einiges an Beispielen wie man mit VBA Objekte erzeugt etc.
Nur hab ich nix gefunden was eine Aktion ausliest.
 
Hier ein Beispiel, das das aktive Bild nach C-Script-Dynamiken durchsucht. Diese werden dann selektiert. Das Objekt, die Eigenschaft, sowie der C-Code werden im Immediate-Fenster von VBA ausgegeben.
Es werden nur Eigenschaften durchsucht, Events funktionieren aber ähnlich.


Dim objHMIObject As HMIObject
Dim objHMIProperty As HMIProperty
Dim objHMIScriptInfo As HMIScriptInfo

For Each objHMIObject In ActiveDocument.HMIObjects
For Each objHMIProperty In objHMIObject.Properties
If objHMIProperty.DynamicStateType = hmiDynamicStateTypeScript Then
Set objHMIScriptInfo = objHMIProperty.Dynamic
If objHMIScriptInfo.ScriptType = hmiScriptTypeCScript Then
objHMIObject.Selected = True
Debug.Print ActiveDocument.name & " - " & objHMIObject.ObjectName & " - Property: " & objHMIProperty.DisplayName
Debug.Print objHMIScriptInfo.SourceCode
End If
End If
Next
Next
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Sam,

danke schon mal für die Antwort. Für Dynamiken klappt das ganze schon. Ich bekomme es aber nicht hin auf eine Aktion zuzugreifen. Vieleicht has du da noch den entscheidenen Tip



Dim objHMIObject As HMIObject
Dim objHMIEvent AS HMIEvent
Dim objHMIScriptInfo As HMIScriptInfo

For Each objHMIObject In ActiveDocument.HMIObjects
For Each objHMIEvent In objHMIObject.Event
If objHMIEvent.EventType= hmiEventTypeMouseLButtonDown Then ---------------------> Hier liegt das C Script
Set objHMIScriptInfo = objHMIObject.Event(2).Actions ----------------------------->hier bekomme ich einen Fehler
If objHMIScriptInfo.ScriptType = hmiScriptTypeCScript Then
objHMIObject.Selected = True
MsgBox (ActiveDocument.name & " - " & objHMIObject.ObjectName & " - Property: " & objHMIProperty.DisplayName)
MsgBox (objHMIScriptInfo.SourceCode)
End If
End If
Next
Next
 
Hallo Adenauer,

hier ein Beispiel für Events:


For Each objHMIEvent In objHMIObject.Events
If objHMIEvent.EventType <> hmiEventTypeNotDefined Then
For Each objHMIActionDynamic In objHMIEvent.Actions
If objHMIActionDynamic.ActionType = hmiActionTypeScript Then
Set objHMIScriptInfo = objHMIActionDynamic
If objHMIScriptInfo.ScriptType = hmiScriptTypeCScript Then
objHMIObject.Selected = True
Debug.Print ActiveDocument.name & " - " & objHMIObject.ObjectName & " - Event: " & objHMIEvent.EventName
End If
End If
Next
End If
Next
 
Zurück
Oben