Create AlarmClasses / AlarmGroups / AlarmAreas via VBA

Create AlarmClasses / AlarmGroups / AlarmAreas via VBA

With zenOn versions >= 6.22 it is possible to create AlarmClasses / AlarmGroups / AlarmAreas via VBA:
VBA Code:

Private Sub CreateAlarmClassGroupArea()
Dim nClassCurrentAmount As Integer
Dim nGroupCurrentAmount As Integer
Dim nAreaCurrentAmount As Integer
Dim nLastColor As Double
Dim strLastClassName As String
Dim strLastGroupName As String
Dim strLastAreaName As String
'Dynamicaly create a new Class
nClassCurrentAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmClasses")
If (nClassCurrentAmount > 0) Then
nLastColor = MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClassCurrentAmount - 1)) & "].Color")
End If
MyWorkspace.ActiveDocument.CreateDynProperty ("AlarmClasses")
strLastClassName = "ClassName" & Trim(Str(nClassCurrentAmount + 1))
MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClassCurrentAmount)) & "].Name") = strLastClassName
MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClassCurrentAmount)) & "].Description") = "ClassText" & Trim(Str(nClassCurrentAmount + 1))
MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClassCurrentAmount)) & "].Color") = nLastColor + 1000
'Dynamicaly Create a new Group
nGroupCurrentAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmGroups")
If (nGroupCurrentAmount > 0) Then
nLastColor = MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGroupCurrentAmount - 1)) & "].Color")
End If
MyWorkspace.ActiveDocument.CreateDynProperty ("AlarmGroups")
strLastGroupName = "GroupName" & Trim(Str(nGroupCurrentAmount + 1))
MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGroupCurrentAmount)) & "].Name") = strLastGroupName
MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGroupCurrentAmount)) & "].Description") = "GroupText" & Trim(Str(nGroupCurrentAmount + 1))
MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGroupCurrentAmount)) & "].Color") = nLastColor + 1000
'Dynamicaly Create a new Area
nAreaCurrentAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmAreas")
MyWorkspace.ActiveDocument.CreateDynProperty ("AlarmAreas")
MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Name") = "AreaName" & Trim(Str(nAreaCurrentAmount + 1))
MyWorkspace.ActiveDocument.CreateDynProperty ("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Items")
MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Items[0].StatusVar") = 4
MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Items[0].AlarmVar") = 5
MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Items[0].QuitVar") = 6
MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCurrentAmount)) & "].Items[0].ClassName") = strLastClassName
End Sub

Below you can find how to read AlarmClasses / AlarmGroups / AlarmAreas:
VBA Code:

Private Sub GetAlarmClassGroupArea()
Dim nCounter As Integer
Dim nGrpCounter As Integer
Dim nGrpAmount As Integer
Dim nClsCounter As Integer
Dim nClsAmount As Integer
Dim nAreaCounter As Integer
Dim nAreaAmount As Integer
Dim nAreaItemAmount As Integer
Dim nAreaItemCounter As Integer
nClsAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmClasses")
nAreaAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmAreas")
nGrpAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmGroups")
If (nGrpAmount > 0) Then
For nGrpCounter = 0 To nGrpAmount - 1
Debug.Print "GrpName:" & MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGrpCounter)) & ".Name")
Debug.Print "GrpText:" & MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGrpCounter)) & ".Description")
Debug.Print "Color:" & MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGrpCounter)) & ".Color")
Debug.Print "Number:" & MyWorkspace.ActiveDocument.DynProperties("AlarmGroups[" & Trim(Str(nGrpCounter)) & ".Id")
Next
End If
If (nClsAmount > 0) Then
For nClsCounter = 0 To nClsAmount - 1
Debug.Print "ClsName:" & MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClsCounter)) & ".Name")
Debug.Print "ClsText:" & MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClsCounter)) & ".Description")
Debug.Print "Color:" & MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClsCounter)) & ".Color")
Debug.Print "Number:" & MyWorkspace.ActiveDocument.DynProperties("AlarmClasses[" & Trim(Str(nClsCounter)) & ".Id")
Next
End If
If (nAreaAmount > 0) Then
For nAreaCounter = 0 To nAreaAmount - 1
Debug.Print MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Name")
nAreaItemAmount = MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Items")
If (nAreaItemAmount > 0) Then
For nAreaItemCounter = 0 To nAreaItemAmount - 1
Debug.Print MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Items[" & Trim(Str(nAreaItemCounter)) & "].ClassName")
Debug.Print MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Items[" & Trim(Str(nAreaItemCounter)) & "].StatusVar")
Debug.Print MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Items[" & Trim(Str(nAreaItemCounter)) & "].AlarmVar")
Debug.Print MyWorkspace.ActiveDocument.DynProperties("AlarmAreas[" & Trim(Str(nAreaCounter)) & ".Items[" & Trim(Str(nAreaItemCounter)) & "].QuitVar")
Next
End If
Next
End If
End Sub


This is a migrated post! Originally posted on 31.10.2008 by user herberto. Please be aware that information can be outdated.