je rencontre un problème en VB script, actuellement sur tia V17 et un IHM tp 1500comfort je suis bloqué.
j'ai fait un script, la partie sur un pc (simulation par exemple) marche très bien, mais la partie sur l'ihm ne fonctionne pas a cause de WinCC qui n'accepte pas toutes les commandes. j'ai essayer plein de solution mais impossible. Le but final est de prendre le fichier csv (créer par l'ihm) sur la clé USB et rajouter à la première ligne "sep=," afin de pouvoir ouvrir dans excel directement sans faire de manipulation dans excel. Voici le code :
Code : Tout sélectionner
Sub FonctionVB_2()
'wait
SmartTags("test")=0
Do While (SmartTags("test")<10000)
SmartTags("test")= SmartTags("test")+ 1
Loop
' Déclaration des variables
Dim cheminFichier, fichier,fichier1,i,arrlines,strcontents,fichierCE
' Déclaration des constantes
Const Ecriture = 2
Const lecture = 1
' Chemin vers le fichier texte
cheminFichier = "\Storage Card USB\record.csv"
On Error Resume Next
' Création de l'objet (version PC)
Set fichier = CreateObject("Scripting.FileSystemObject")
' S'il la fonction n'a pas retournée d'erreur, alors on est sur le runtime PC (simulation)
If Err.Number = 0 Then
'On efface l'erreur
Err.Clear
'Ouverture du fichier en mode lecture, on le créeet si le fichier n'existe pas,
Set fichier1 = fichier.OpenTextFile(cheminFichier, lecture, -2)
' En cas d'erreur lors de l'ouverture, on l'affiche l'erreur dans les messages système
If Err.Number <> 0 Then
ShowSystemAlarm "Erreur lors de l'ouverture du fichier #" & CStr(Err.Number) & " " & Err.Description
Err.Clear
End If
'copier tout les fichiers dans strcontents
strcontents = fichier1.ReadAll
'fermeture du fichier
fichier1.Close
'enregistrer le nombre de ligne présent dans le fichier
arrlines = Split(strcontents,vbCrLf)
'ouverture en mode ecriture
Set fichier1 = fichier.OpenTextFile(cheminFichier, Ecriture, -2)
'Ecriture dans le fichier
fichier1.Write("sep=,")
'boucle pour recopier le fichier
For i=0 To UBound(arrlines)-1
fichier1.WriteLine arrlines(i)
Next
'Fermeture du fichier
fichier1.Close
' On est sur l'IHM
Else
'Création de l'objet (version Windows CE)
Set fichierCE = CreateObject("FileCtl.File")
If Err.Number <> 0 Then
ShowSystemAlarm "Erreur lors de la creation object #" & CStr(Err.Number) & " " & Err.Description
Err.Clear
End If
'Ouverture du fichier en mode lecture
fichierCE.Open cheminFichier, lecture
' En cas d'erreur lors de l'ouverture, on l'affiche l'erreur dans les messages système
If Err.Number <> 0 Then
ShowSystemAlarm "Erreur lors de l'ouverture du fichier #" & CStr(Err.Number) & " " & Err.Description
Err.Clear
End If
'copier tout les fichiers dans strcontents
strcontents = fichierCE.ReadAll
'fermeture du fichier
fichierCE.Close
'enregistrer le nombre de ligne présent dans le fichier
arrlines = Split(strcontents,vbCrLf)
If Err.Number <> 0 Then
ShowSystemAlarm "Erreur lors de l'ouverture #" & CStr(Err.Number) & " " & Err.Description
Err.Clear
End If
'Ecriture dans le fichier
fichierCE.LinePrint("sep=,")
'boucle pour recopier le fichier
For i=0 To UBound(arrlines)-1
fichierCE.LinePrint( arrlines(i))
Next
' En cas d'erreur lors de l'écriture, on l'affiche l'erreur dans les messages système
If Err.Number <> 0 Then
ShowSystemAlarm "Erreur lors de l'écriture #" & CStr(Err.Number) & " " & Err.Description
Err.Clear
End If
'Fermeture du fichier
fichierCE.Close
End If
End Sub