Page 1 sur 2

TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 10:09
par Hyro
Bonjour

Je programme une machine ou à chaque fin de cycle je crée des csv que je sauvegarde sur la carte SD de mon IHM.
J'aimerai que l'opérateur puisse mettre une clé USB de temps en temps et sur l'appui d'un bouton le dossier de CSV se copie sur la clé.
Pour se faire j'ai crée un script:

Dim fso

Set fso = CreateObject ("Scripting.FileSystemObject")

fso.CopyFolder "\Storage Card SD\TICKET", "\Storage Card USB\Stock", True
Copy_Done = false;

Donc un code tout bête en VBA.
J'utilise le bit Copy_done pour lancer le script et je le remet à false pour voir si la commande se fait.
Quand j'appuie sur mon bouton le bit passe à un mais ne retombe pas. Donc soit mon script ne se lance pas soit j'ai fait une faute dans le FSO.
J'ai essayé de lancer directement le script dans les évènements du bouton mais même résultat.
J'ai aussi ajouté une navigation pour vérifier que l'ihm voit bien la clé.

Mes deux chemins sont bon donc je comprend pas trop.

Merci d'avance.

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 10:25
par itasoft
Slts,
Pour le VBA soit le script ne s’éxecute pas soit c’est l’instruction qui plante le VBA, mettre des compteurs pour le voir ou faire du pas à pas
Exemple :

Compteur1=Compteur1+1
fso.CopyFolder "\Storage Card SD\TICKET", "\Storage Card USB\Stock", True
Compteur2=Compteur2+1
Copy_Done = false;

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 10:26
par Hyro
Update dans les alarmes systèmes de l'ihm j'obtiens se message:

20010 : Error ActiveX component can't create object: 'FileSystemObject' in script <SDCopy> in line 13.

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 10:38
par itasoft
slts,
Dim fso As Object

c'est l'instruction CreateObject qui plante

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 10:55
par Hyro
Ouai j'ai vu sa j'ai modifié le code.
Siemens a son propre VBA et je peux pas écrire comme pour windows ou excel.

Dim fso

Set fso = CreateObject ("FileCtl.filesystem")
C1 = C1 + 1
fso.FileCopy "\Storage Card SD\TICKET", "\Storage Card USB\Stock"
C2 = C2 + 2
Copy_Done = True

Je suis parti la dessus et j'ai plus cette erreur.
Maintenant il me met juste Error Acces is denied in Script <SDCopy> in line 14.

Mon premier compteur augmente quand je lance le script mais pas le second

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 11:03
par itasoft
ça prouve déjà que c'est fso.FileCopy "\Storage Card SD\TICKET", "\Storage Card USB\Stock" qui plante

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 11:29
par philou77
Salut !

cela peut t'aider .; peut être..

https://www.automation-sense.com/forum/ ... e-usb.html

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 11:40
par djé
Salut,
Attention! vérifie bien si ton IHM est en Windows CE: si c'est le cas la gestion de SystemFIleObject n'est pas gérée. il faut passer par un autre ActiveX.
EN simul les script avec FSO peuvent fonctionner par la machine Hôte est un Windows classic par contre en RUntime il faut tout refaire!

edit :Oops j'avais pas tout lu, apparment tu utilise le bon activeX !

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 11:41
par Hyro
Dim Path1, arrayPath, arraySize,Path2
Dim fso

Path1 = SDcopyfilepath

arrayPath = Split(Path1, "\")
arraySize = UBound(arrayPath)
Path2 = "\Storage Card USB\Stock" & arrayPath(arraySize)


Set fso = CreateObject ("FileCtl.filesystem")
C1 = C1 + 1
fso.FileCopy Path1,Path2
C2 = C2 + 2
Copy_Done = True


J'arrive à copier un csv avec ce code sur la clé usb. Je peut pas pointer de dossier directement donc l'opérateur est obligé de le faire un par un à la main. je trouve ça vraiment pas fou.
Ou alors il faut que je trouve un moyen de compiler tout les CSV pour envoyer un seul

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Posté : 24 nov. 2022, 11:51
par philou77
Re

Le code copie un fichier.
C’était une inspiration.
Cherche si il existe une commande pour un répertoire.

Sinon faut faire une boucle..

Autre astuce.
Renommer le dossier et recréer l’ancien.
Aucune copie a faire