Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Conflit fichiers Excel

Résolu !
Accéder à la solution

Bonjour tout le monde,

 

Je crée ce sujet car je n'ai pas réussi à trouver de réponse sur le forum.

 

Alors voilà mon souci. J'ai crée un programme d'automatisation d'étalonnage sous Labview qui enregistre à chaque fin de fonction (mV,V,mA,Hz,etc.) les données de cette dernière dans un fichier Excel. 

Pour info, c'est toujours enregistré dans le même fichier qui reste ouvert durant tout le process et à chaque fonction, un nouvel onglet est crée.

 

Ce process est long et les techniciens utilisant le programme auto voudrait durant l'exécution, utiliser d'autres fichiers Excel. 

 

J'ai l'impression que le fait qu'Excel soit utilisé par LV et par l'utilisateur en même temps pose problème. Un message d'erreur s'affiche en disant qu'une erreur inconnue est survenue dans le sous VI d'ouverture de mon fichier excel. Je n'ai pas le n° de l'erreur en question 😞

 

D'où ma question: peut-on utiliser un fichier excel pendant que labview est en train d'en utiliser un autre ? Si oui, quelle est la démarche à effectuer ?

J'espère pouvoir trouver une solution, sinon cela ne serait vraiment pas pratique. Les techniciens se retrouveraient bloqués devant leur ordinateur durant toute la durée d’exécution de mon programme (1h45) alors qu'il n'a pas besoin d'intervention de la part de l'utilisateur. 

 

Je reste dispo si vous avez besoin de plus d'infos pour pouvoir m'aider.

 

Merci d'avance de vos retours et de votre aide 🙂

0 Compliments
Message 1 sur 6
1 185 Visites

Tu utilises le toolkit de génération de rapports ou directement les méthodes et propriétées ActiveX?

 

Ben64

0 Compliments
Message 2 sur 6
1 165 Visites

J'utilise le toolkit de génération de rapport. C'était bien plus pratique et plus facile que de passer par l'active X que je ne suis pas sûr de bien maîtriser.

 

Pour résoudre ce problème, je dois forcément passer par l'active X ? 

(je redoute le "oui" ... ^^')

 

Merci pour ta réactivité Ben 😉

0 Compliments
Message 3 sur 6
1 139 Visites
Solution
Accepté par Alain_3434

Il n'y a pas de façon élégante de résoudre ce problème, LabVIEW et les techniciens doivent utiliser des instances différentes d'Excel.

 

Pour les techniciens cela demandera de la discipline, la chose à éviter est d'ouvrir un fichier Excel en double-cliquant dessus. Cela ouvrira le fichier dans l'instance actuelle de Excel (si un fichier Excel est ouvert, et si le programme LV roule ce sera l'instance du fichier de test). Il faut ouvrir Excel (en passant par C:\program files ... ou un raccourci) puis à partir de Excel naviguer jusqu'au fichier à ouvrir. Ainsi le fichier ouvrira dans une nouvelle instance de Excel. Dans le gestionnaire de tâches on verra deux occurrences de Microsoft Excel. Tu peux également faire un fichier .bat qui contient la ligne start excel.exe /x ça lancera une nouvelle instance de Excel.

 

Maintenant le revers de la médaille, si un fichier Excel est ouvert et que le programme est lancé par défaut l'instance de Excel ouverte sera utilisée. Ce comportement est déterminé par un sous-vi  de New Report.vi => NI_Excel.lvclass:new report subVI.vi. Dans ce sous-vi il y a la fonction Automation Open donc l'entrée Open in new instance utilise la valeur par défaut False. Il faut donc relier à cette entrée une valeur True. Il faut faire attention en faisant ça de ne pas faire d'erreur qui pourrait empêcher le bon fonctionnement du toolkit.

 

C:\Program Files (x86)\National Instruments\LabVIEW 2017\vi.lib\Utility\NIReport.llb\Excel\new report subVI.vi

 

Screen Shot 05-21-21 at 07.32 AM.png

 

Ben64

 

Message 4 sur 6
1 128 Visites

Super Ben une nouvelle fois, et désolé du retour tardif, j'étais pas mal occupé ces derniers temps, je bossais sur autre chose.

 

Cela fonctionne parfaitement, et c'est vraiment pratique de pouvoir avoir 2 instances bien distinctes, celle pour LV et une autre, où l'utilisateur peut faire ce qu'il veut.

 

Des petits tests que j'ai pu effectuer : ouvrir une nouvelle instance avec LV ne sert que si l'on a déjà une une instance Excel ouverte. Si l'on ne le fait pas, LV partagera la même instance que celle qui est d'ors et déjà ouverte. 

 

Donc une option simple pour éviter tout problème : fermer tous les fichiers excel avant l'ouverture de LV et vous pourrez les ouvrir après que LV ait ouvert sa premiere instance Excel.

 

Si vous ne voulez pas fermer tous les fichiers excel avant que LV ouvre une instance Excel, alors il faudra faire comme dans l'exemple de Ben, il faudra mettre "Open in new instance" du sous VI correspondant en True. Mais attention, si vous voulez utiliser le sous VI "New Report" à chaque fois que vous voulez noter de nouvelles données dans votre Excel, si "Open in new instance" est Vrai alors à chaque fois, Excel va ouvrir un nouveau fichier dans une nouvelles instance avec les données précédemment enregistrées et les nouvelles. Ce comportement peut ne pas être optimal, par exemple dans mon application, je veux que ce soit une maj du fichier avec les nouvelles données (donc même instance et même fichier que celui deja ouvert). C'est pourquoi j'ai fait sortir un control de ce sous VI.

Faites attention, sub vi contient plusieurs sous VI qui doivent tous avoir la meme forme !

 

(Je me sers du "new report" car juste avec le chemin du fichier je peux avoir accès au "report out" qui me sert à "trafiquer" mon fichier Excel comme je le souhaite :). C'est possible qu'il y ait plus propre comme démarche, mettre le report out dans le cluster plutôt que le chemin du fichier ?)

 

PS: pour l'instant le toolkit fonctionne bien, on va croiser les doigts 🙂

 

Merci encore ben64 pour cette belle p'tite astuce 😉

Message 5 sur 6
1 063 Visites

Merci pour ce retour détaillé qui sera sans doute utile à d'autres utilisateurs.

Message 6 sur 6
1 049 Visites