Discussions au sujet de NI LabVIEW

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

Création incomplète d'un Excel à partir d'un VI

Résolu !
Accéder à la solution

Bonjour à tous,

 

Je suis étudiant en école d'ingénieur et je travaille sur un projet permettant l'étude thermique d'un refroidissement convectif à courants croisés. Mon programme LabView permet l'activation du matériel et l'acquisition de données (températures, pression...)

Seulement le VI permettant la création de mon excel me pose problème.

 

Le VI est sensé:

- Ouvrir et enregistrer un XLS sous un nom pré-paramétré

- Ecrire dans une première colonne un tableau d'en-tête donné

- Ecrire dans une deuxième colonne des paramètres rentrés en amont

- Créer une deuxième feuille de calcul et en modifier le nom

- Inscrire dans une première colonne chaque seconde (de 1 à n)

- Inscrire dans une deuxième colonne les température à partir d'un graphe

 

Rien de biens sorcier donc. Le problème, c'est qu'à la création de l'excel, le deuxième feuille de calcul n'apparait pas/n'est pas créée, ni les valeurs qui m'intéressent donc. Pourtant toutes mes données sont bien collectées dans mon graphe.

 

Je ne suis pas expert en LabVIEW et j'ai testé pleins de solutions, sans succès.. je fais donc appel à votre aide

Je vous joint le VI qui créer l'excel, ainsi que ses dépendances. Il y a dans le zip aussi une photo de l'excel que j'obtiens pour le moment

J'ai désactivé certains graphes pour que l'exécution, je l'espère, se fasse sans erreur

Merci d'avance !

 

Version LabVIEW: 2015 (64bits)

Version Excel: 2016

0 Compliments
Message 1 sur 9
2 559 Visites

Plusieurs remarques,

 

Je ne crois pas que la version 64-bits de LabVIEW soit 100% compatible avec l'automation ActiveX. À moins d'un besoin en processing particulièrement exigeant on devrait toujours utiliser la version 32-bits.

 

Quand tu crées un nouveau workbook combien de feuilles a-t-il par défaut? S'il y en a qu'une seule il faudra utiliser la méthode Sheets.Add avant Sheets.Item pour ajouter une seconde feuille.

 

L'indexage des objets collection de Ms Office commence à 1, tu tentes donc de renommer la première feuille de ton workbook.

 

De manière plus générale tu devrais relier le cable d'erreur entre les noeuds de méthode/propriété et fermer les références en ordre inverse qu'elles ont été ouvertes.

 

Ben64

Message 2 sur 9
2 550 Visites

J'ai relu plus attentivement ton message. Tu renomme la première feuille et je crois que c'est bien ce que tu veux faire. S'il n'y a pas de deuxième feuille lorsque Excel ouvre alors tu dois l'ajouter à l'aide de la méthode la méthode Sheets.Add comme précisé dans mon message. Attention aux opérations parallèles (alignement horizontal des colonnes de la première feuille et propriété Worksheet.Next) quelle opération s'effectuera en premier? Utilise les entrées/sorties erreur pour t'assurer que l'alignement soit fait avant d'obtenir (ou de créer si nécessaire) une nouvelle feuille.

 

Ben64

Message 3 sur 9
2 537 Visites

Merci pour ces réponses rapides !

J'ai câblé toutes les erreur in/out ça n'a pas résolu le problème mais au moins pas de problème d'opérations parallèles.

 

En effet je renomme aussi la première feuille (par "Information générales") j'ai oublié de le préciser dans mon message

Je ne suis pas sur de comprendre comment ajouter une méthode Sheets.Add avant mon Sheets.Item. Et à priori mon Vi est sensé déjà avoir créé les 2 feuilles de calcul non ?

 

Autre chose, j'ai câblé une sortie d'erreur pour voir si une erreur avait lieu et où.

Résultat dans la photo jointe:

A gauche de mon Worksheet.Name (Données numériques), pas d'erreur

A droite de mon Worksheet.Name, erreur 97: Unknown System Error

 

Le problème de création de la deuxième feuille peut-il venir de là ?

 

Merci !

0 Compliments
Message 4 sur 9
2 508 Visites

Non, à priori on ne peut pas supposer que ton VI à créer 2 feuilles. Si tu mets un breakpoint avant de renommer la feuille tu pourras vérifier combien de feuilles il y a dans le classeur.

 

EDIT: Error 97, LabVIEW:  A null or previously deleted refnum was passed in as an input.

Il semblerait que la feuille 2 n'existe pas.

 

Ben64

0 Compliments
Message 5 sur 9
2 505 Visites

En effet vous avez raison, il n'y a bien qu'une feuille qui se créer..

J'imagine que c'est pour ça qu'une erreur est renvoyé après mon deuxième rename; tout simplement parce qu'il ne peut pas rename une feuille qui n'existe pas...

 

EDIT: en revanche, je n'arrive toujours pas à ajouter la méthode Sheets.Add .. J'ai l'impression de poser une question stupide mais pas moyen de le trouver sur mon labview

0 Compliments
Message 6 sur 9
2 500 Visites
Solution
Accepté par Greyfox62

Palette Connectivity -> ActiveX sélectionne un Invoke Node et place le sur ton bloc diagramme (tu peux aussi copier le noeud Sheets.Item). Quand tu connectes une référence à un workbook à l'entrée référence toutes les méthodes disponibles pour ce type de référence seront accessible si tu appuis sur "method" et sélectionne Add. Connecte la référence de ta première feuille à l'entrée After sinon la nouvelle feuille sera insérée avant la feuille active.

 

Ben64

 

Voici un exemple

AddExcel Sheet.png

Message 7 sur 9
2 486 Visites

Un grand merci pour votre aide !

 

0 Compliments
Message 8 sur 9
2 454 Visites

En fait il est possible de configurer Excel pour ouvrir un nouveau classeur avec un nombre de feuilles pré-déterminé. Il faut aller dans les options générales de Excel et inscrire le nombre de feuilles voulues dans la section "Lors de la création de classeurs inclure ces feuilles: ..." Par contre il faudrait toujours faire cette opération/vérification à chaque nouvelle installation du logiciel (pas super si c'est développé pour un client).

 

Une solution optimale serait de vérifier le nombre de feuilles du classeur (propriété Sheets.Count) et si la valeur retournée est 1 alors on insère une nouvelle feuille, sinon on peut aller directement à l'étape renommer la seconde feuille.

 

Ben64

0 Compliments
Message 9 sur 9
2 450 Visites