c'est une macro en VBA, ça ajoute les actions sur les alarmes qui au départ n'ont pas d'actions
Dans VijeoDesigner exporter les variables au format .XML unicode, puis importer le fichier XML resultant.
copier les lignes ci dessous et les coller dans le VBA de Excel , personnaliser les paramètres et exécuter la macro
Code : Tout sélectionner
Sub NumeroteActionsAlarmesXML()
Dim TXT As String, TXT2 As String, sSS As String, Clef As String, NameAlr As String, NamePopUp As String
Dim NameVar As String, fileNameSource As String, fileNameCible As String
Dim iNUM As Long, nbl As Long, mySize As Long, Y As Long, YMax As Long
Dim Number1 As Integer, Number2 As Integer
Dim Marche As Boolean, Arret As Boolean, yaAL As Boolean
Dim TList(20) As String
'-Exporter toutes les variables au format XML
'-Importer le fichier alarmes résultant _RESULT.XML dans les variables au format XML Unicode
'============================ PARAMETRES à personnaliser =======================
'fichier source de export XML
fileNameSource = "D:\AFF\VariablesIHM.XML"
'Nom du PopUp à ouvrir
NamePopUp = "10001: Ecran3"
'Nom de la variable qui sert de index à la ressource Texte
'va prendre le n°du message à afficher sur le PopUp
NameVar = "INDEX"
'Repére qui indique que c'est une Alarme, ex: Noms qui commencent par ALR
NameAlr = "ALR"
'================================================================================
Number1 = FreeFile
Open fileNameSource For Input As #Number1
fileNameCible = Replace(UCase(fileNameSource), ".XML", "_RESULT.txt")
Number2 = FreeFile
Open fileNameCible For Output As #Number2
Clef = "<Variable name=" & Chr(34) & NameAlr
While Not EOF(Number1)
Line Input #Number1, TXT
TXT = Trim(TXT)
If nbl = 0 Then Print #Number2, Chr(255) & Chr(254) & StrConv(Mid(TXT, 3), 64) & StrConv(vbCrLf, 64)
If nbl = 1 Then Print #Number2, StrConv(TXT, 64) & StrConv(vbCrLf, 64)
Arret = InStr(TXT, "</Variable>") > 0
Marche = InStr(TXT, Clef) > 0 Or Marche
If Marche Then
TList(YMax) = TXT
YMax = YMax + 1
End If
yaAL = InStr(TXT, "<AlarmGroup>GroupeAlarmes1</AlarmGroup>") > 0
If yaAL And Marche Then
For Y = 0 To YMax - 1
Print #Number2, StrConv(TList(Y), 64) & StrConv(vbCrLf, 64)
Next Y
YMax = 0
iNUM = iNUM + 1
sSS = "<AlarmTouchActions buzzerOnTouch=#Enabled#>"
sSS = Replace(sSS, "#", Chr(34))
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = "<Word sourceConstant=#x# destination=#" & NameVar & "#/>"
sSS = Replace(sSS, "x", Format(iNUM))
sSS = Replace(sSS, "#", Chr(34))
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = " <PopupPanel action=#Open#>"
sSS = Replace(sSS, "#", Chr(34))
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = "<PanelID>" & NamePopUp & "</PanelID>"
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = "<Position centered=#true#/>"
sSS = Replace(sSS, "#", Chr(34))
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = "</PopupPanel>"
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
sSS = "</AlarmTouchActions>"
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
End If
If Arret Then Marche = False
nbl = nbl + 1
Wend
For Y = 0 To YMax - 1
Print #Number2, StrConv(TList(Y), 64) & StrConv(vbCrLf, 64)
Next Y
sSS = "</VariableData>"
Print #Number2, StrConv(sSS, 64) & StrConv(vbCrLf, 64)
Close #Number1
Close #Number2
fileNameSource = fileNameCible
mySize = FileLen(fileNameSource)
TXT = String(mySize, Chr(0))
Number1 = FreeFile
Open fileNameSource For Binary As #Number1
Get #Number1, , TXT
Close #Number1
TXT = Replace(TXT, vbCrLf, "")
fileNameCible = Replace(fileNameSource, ".txt", ".XML")
Number1 = FreeFile
Open fileNameCible For Binary As #Number1
Put #Number1, , TXT
Close #Number1
DoEvents
MsgBox ("Fin des opérations")
End Sub