Comment faire une écriture continue?
Résolu
AnissaUchiha
-
AnissaUchiha Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
AnissaUchiha Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour j'utilise un langage VBScript pour créer un fichier qui enregistre de manière continue ( tant que je n'ai pas appuyer sur un BPStop par exemple) le problème c'est que ma boucle ne fonctionne pas et j'ai a chaque fois un fichier Excel qui se créer avec une ligne d'écriture dedans. Pour avoir une deuxieme ligne je dois appuyer à chaque fois sur BPStart. J'aimerai que ça se fasse de manière automatique … J'ai donc créer 2 script. Le 1er qui contient le code et le deuxieme qui est censé s'occuper de l'écriture continue.
1er SCRIPT ==>
2EME SCRIPT ==>
EDIT : Ajout des balises de code
============================================================================
Même en mettant ma boucle , cela n'écrit qu'une fois . Et je me demande si deux variable change en même , comment je peux gerer ceci?
Voila merci bcp de votre aide :)
PS: Je programme en VBScript sur TIAportail (SIEMENS)
1er SCRIPT ==>
Sub WriteDataToExcel() 'Conseil : ' 1. Utilisez la combinaison de touches <CTRL+ESPACE> ou <CTRL+I> pour ouvrir une liste de l'ensemble des objets et fonctions ' 2. Ecrivez le code en utilisant l'objet HMI Runtime. ' Exemple : HmiRuntime.Screens("Screen_1"). ' 3. Utilisez la combinaison de touches <CTRL+J> pour créer une référence d'objet. 'Ecrivez le code à partir de cette position : 'Set ==> pour variable global Dim FolderWay , ObjectWay , FileName , File , FileExist, header , value , EcritureContinue, currentTime ' Declaration des variables FolderWay = "C:\Users\agher\Downloads\Henallux Automatique\3ème bloc\STAGE\ExcelExemple" 'Là ou l'on veut enregistrer le fichier Excel sous un nom Set ObjectWay = CreateObject ("Scripting.FileSystemObject") 'Creation d'un object pour voir si le dossier est créé ou pas 'Si le dossier n'existe pas, on le créer. If Not ObjectWay.FolderExists(FolderWay) Then ObjectWay.CreateFolder FolderWay End If 'FileName = Year(Now()) & "_" & Month(Now()) &"_" & Day(Now()) & "-" & Hour(Time) & "_" & Minute(Time) & "_" & Second(Time) & ".csv" FileName = "EnregistrementValeur.csv" Set File = CreateObject ("Scripting.FileSystemObject") ' Creation d'un object pour voir si le fichier est créé ou pas FileExist = File.FileExists(FolderWay & "\" &FileName) ' On créer une variable qui indique le chemin du fichier 'Si le fichier n'existe pas, on le créer If FileExist = False Then 'On créer le fichier File.CreateTextFile(FolderWay & "\" &FileName) 'On créer maintenant les en-têtes du fichier Excel Set header = File.OpenTextFile(FolderWay & "\" &FileName, 8) ' Le 8 signifie "ouvrir le dossier et écrire à la fin" header.WriteLine("Temps ; ActionA ; ActionB") header.Close 'Pas oublier de fermer quand on a fini sinon la suite se fera dans les headers 'On vide l'objet Set File = Nothing End If currentTime = Hour(Time) & ":" & Minute(Time) & ":" & Second(Time) 'Please replace all sequences which are enclosed with '_' by your own code. Do Set File = CreateObject ("Scripting.FileSystemObject") Set value = File.OpenTextFile(FolderWay & "\" &FileName, 8) value.WriteLine ( currentTime & ";" & SmartTags("ActionA") & ";" & SmartTags("ResetActionA")) ' ";" sépare les collonnes dans Excel EcritureContinue = SmartTags("BpStartLog") Loop While EcritureContinue = True ' tant que le BPSTARTLOG vaut 1 , on continue d'écrire value.Close End Sub
2EME SCRIPT ==>
Sub Continue() 'Conseil : ' 1. Utilisez la combinaison de touches <CTRL+ESPACE> ou <CTRL+I> pour ouvrir une liste de l'ensemble des objets et fonctions ' 2. Ecrivez le code en utilisant l'objet HMI Runtime. ' Exemple : HmiRuntime.Screens("Screen_1"). ' 3. Utilisez la combinaison de touches <CTRL+J> pour créer une référence d'objet. 'Ecrivez le code à partir de cette position : Dim EcritureContinue Do Call WriteDataToExcel EcritureContinue = SmartTags("BpStopLog") 'J'appel le 1er script Loop While EcritureContinue = False ' tant que le BPSTARTLOG vaut 1 , on continue d'écrire End Sub
EDIT : Ajout des balises de code
============================================================================
Même en mettant ma boucle , cela n'écrit qu'une fois . Et je me demande si deux variable change en même , comment je peux gerer ceci?
Voila merci bcp de votre aide :)
PS: Je programme en VBScript sur TIAportail (SIEMENS)
A voir également:
- Comment faire une écriture continue?
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Ecriture instagram - Guide
- Écriture à l'envers miroir - Guide
- Hotmail continue - Forum Hotmail / Outlook.com
1 réponse
Bonjour,
Plusieurs petites choses...
déjà.. tu n'écris pas dans un fichier excel .... mais juste dans un fichier csv. (ce n'est pas la même chose).
Ensuite... tu as placé l'ouverture du fichier dans la boucle....
pourquoi ? Une fois juste avant la boucle suffit amplement...
Puis..
Dans ton commentaire... tu parles de "1" ... mais là tu as mis "False" .... normal ?
Sachant que de l'autre côté tu as bien
Tu utilises également la même variable deux fois...
D'un côté
de l'autre
Ne penses tu pas que ça puisse poser problème ?
Je n'ai fait que lire vite fait...... mais ces points me semblent étranges...
Plusieurs petites choses...
déjà.. tu n'écris pas dans un fichier excel .... mais juste dans un fichier csv. (ce n'est pas la même chose).
Ensuite... tu as placé l'ouverture du fichier dans la boucle....
Do Set File = CreateObject ("Scripting.FileSystemObject") Set value = File.OpenTextFile(FolderWay & "\" &FileName, 8)
pourquoi ? Une fois juste avant la boucle suffit amplement...
Puis..
Loop While EcritureContinue = False ' tant que le BPSTARTLOG vaut 1 , on continue d'écrire
Dans ton commentaire... tu parles de "1" ... mais là tu as mis "False" .... normal ?
Sachant que de l'autre côté tu as bien
Loop While EcritureContinue = True ' tant que le BPSTARTLOG vaut 1 , on continue d'écrire
Tu utilises également la même variable deux fois...
D'un côté
EcritureContinue = SmartTags("BpStopLog") 'J'appel le 1er script
de l'autre
EcritureContinue = SmartTags("BpStartLog")
Ne penses tu pas que ça puisse poser problème ?
Je n'ai fait que lire vite fait...... mais ces points me semblent étranges...
Tout dabord merci pour ta réponse rapide je ne m'y attendais.
j'ai modifié plein de fois mon programme donc il ne faut pas se fier au commentaire , j'aurai du les supprimer.
Je remarque aussi que j'ai oublier d'effacer la boucle dans le 1er script ( c'était mon 1er essaie avant de créer le 2eme script mais ce ne fonctionnait tjr pas..) .
J'ai donc relancer le programme en nettoyant le code et je te remercie j'ai su faire mon écriture continue :) ! Maintenant je peut donc avancer pour régler le problème de l'ouverture du fichier à chaque fois.
Encore merci !