Comment exécuter le script jsl dans Excel VBA ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Essayez d'exécuter le script jsl dans l'environnement Excel VBA. le but du script est d'ouvrir deux tables de données csv et de les joindre.
le script aime ci-dessous:
Sous loadData()
Dim myjmp As JMP.Application
Dim jmp_doc As JMP.Document
Dim jmp_BL comme JMP.DataTable
Dim jmp_dt As JMP.DataTable
Dim jmp_dtFinal comme JMP.DataTable
Dim jmpstr As String
Set myjmp = CreateObject("JMP.Application")
monjmp.Visible = Vrai
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\BL.csv")
Définir jmp_BL = jmp_doc.GetDataTable
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\cbData.csv")
Définir jmp_dt = jmp_doc.GetDataTable
jmpstr = "jmp_dtFinal= jmp_dt << Join(With(jmp_BL),Merge Same Name Columns,By Matching Columns( :col1 = :col2, :col2= :col2),Drop multiples( 0, 1 ),Name( ""Include non-correspondances"" )(1, 1),);"
myjmp.RunCommand jmpstr
Les deux tables de données peuvent être ouvertes correctement, mais seule la fonction de jointure ne fonctionne pas. Quelqu'un peut-il aider sur le script?
Merci!
Re : Comment exécuter le script jsl dans Excel VBA ?Oui, il sera ajouté dans JMP 13. Merci,
Brian
Re : Comment exécuter le script jsl dans Excel VBA ?, En espérant qu'il sera ajouté dans la prochaine version de jmp.
Merci!
Re : Comment exécuter le script jsl dans Excel VBA ?Je suis désolé, mais cette option n'a pas encore été intégrée à l'automatisation.Vous pouvez supprimer les colonnes du tableau de résultats à l'aide de l'automatisation.De plus, si cela ne vous dérange pas de fusionner la table dans l'une des tables existantes, vous pourrez peut-être utiliser UpdateTable à la place.
Brian
Re : Comment exécuter le script jsl dans Excel VBA ?Salut Brian
Merci beaucoup pour vos informations.
J'ai une autre question à propos de cette jointure de données. Lorsque je définis les options de correspondance de jointure comme ci-dessous pour supprimer les multiples et inclure les non-correspondances dans les tables principales et avec.
DT4.SetJoinMatchOptions Faux, Vrai
DT5.SetJoinMatchOptions Vrai, Vrai
Mais le résultat apparaît comme ci-dessous, semble que ces deux tables soient jointes, mais n'ont pas fusionné avec la même colonne de nom.

Normalement, dans le paramètre de jointure de la table de données jmp, il existe une option "Fusionner la colonne du même nom", si cochez celle-ci, la table fusionnera les colonnes avec le même nom. Mais dans cette fonction de jointure VBA:
Définir NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "Join Table")
Il n'y a pas un tel réglage.
Alors savez-vous comment réaliser la fonction de "colonne de même nom nerge" ?
merci!

Re : Comment exécuter le script jsl dans Excel VBA ?Salut,
L'utilisation de "Set" pour les objets peut être facultative dans Visual Studio lors de l'utilisation de VB, de sorte que les exemples ne l'utilisent pas toujours.Ils ont également été écrits pour être utilisés par les premières versions de Visual Studio comme 2010. Apparemment, VBA dans Excel a ses propres bizarreries uniques avec la syntaxe.Dans votre cas, il ne veut pas de parenthèse autour des options pour SetJoinMatchOptions.Une alternative consiste à utiliser Call devant.Voici un exemple de travail de mon Excel 2013
'Le deuxième exemple est une jointure utilisant des colonnes correspondantes de deux comme
'tables de données.
Dim Doc4 As JMP.Document
Dim Doc5 As JMP.Document
Estomper NewDT2 en tant que JMP.DataTable
Dim DT4 comme JMP.DataTable
Dim DT5 comme JMP.DataTable
Set MyJMP = CreateObject("JMP.Application")
MonJMP.Visible = Vrai
Set Doc4 = MyJMP.OpenDocument("C:\Program Files\SAS\JMP\13\Samples\Data\Ingots.jmp")
Set Doc5 = MyJMP.OpenDocument("C:\Program Files\SAS\JMP\13\Samples\Data\Ingots2.jmp")
Définir DT4 = Doc4.GetDataTable
Définir DT5 = Doc5.GetDataTable
DT4.AddToJoinMatchList ("Heat"))
DT4.AddToJoinMatchList ("Soak"))
' Définissez les options sur Supprimer les multiples et ne pas inclure les non-correspondances
DT4.SetJoinMatchOptions Vrai, Faux
DT5.AddToJoinMatchList ("Heat"))
DT5.AddToJoinMatchList ("Soak"))
DT5.SetJoinMatchOptions Vrai, Faux
Définir NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "Join Table")
Brian
Re : Comment exécuter le script jsl dans Excel VBA ?Salut Brian
Peut-être que je ne l'ai pas décrit clairement.
Lorsque j'essaie d'utiliser l'exemple dans Data Table .NET pour joindre des tables, j'ai trouvé que l'exemple ne pouvait pas fonctionner correctement.
Par exemple:
Lorsque j'ouvre une table de données, je ne peux pas utiliser uniquement le script ci-dessous :
Dim Doc4 As JMP.Document
Dim DT4 comme JMP.DataTable
Doc4 = MyJMP.OpenDocument(tempDir & "cbData.csv")
DT4 = Doc4.GetDataTable
Au lieu de cela, j'ai besoin d'ajouter Set au début des scripts comme ci-dessous :
Ensemble Doc4 = MyJMP.OpenDocument(tempDir & "cbData")
Ensemble DT4 = Doc4.GetDataTable
Après cela, les deux tables de données peuvent être importées correctement.
tandis que quand je vais définir les options de correspondance de jointure, lorsque j'utilise le script ci-dessous:
DT4.SetJoinMatchOptions(Vrai, Faux)
Il y a toujours une erreur, il semble que j'ai aussi besoin de l'envoyer à une variable. Mais je ne sais pas trop quel est le type de la valeur de retour de " DT4.SetJoinMatchOptions(Vrai, Faux) ". Peut-être changer le script comme ci-dessous :
Dim str comme xxxxxx
set str= DT4.SetJoinMatchOptions(Vrai, Faux)
Je ne sais pas si mon hypothèse est correcte ou non, je ne sais tout simplement pas comment ce JoinMatchOptions peut être défini.

Re : Comment exécuter le script jsl dans Excel VBA ?Je passerais False et True plutôt que 0 et 1, comme le fait l'exemple.Cependant, il est plus probable qu'il y ait un problème avec l'importation de vos données pour DT4. Il m'est difficile de dire si cette table a été importée avec succès.
Brian Corcoran
Développement JMP
Re : Comment exécuter le script jsl dans Excel VBA ?Salut, Cerveau
Merci pour vos informations.
C'est utile pour moi. alors que je souffre d'un autre problème lorsque je me réfère à la table de données .NET. Il existe quelques exemples dans Data Table .NET. Et je suis l'exemple pour finir mon script.
Vous trouverez ci-dessous l'exemple dans le tableau DATA. FILET
Bien que j'essaie d'utiliser la même méthode, mais il semble que lorsque je définis JoinMatchOptions, il y a toujours une erreur. semble que j'ai besoin de définir une variable pour ce script.
alors que je ne trouve aucune information d'aide pour ce JoinMatchOptions. Je ne sais pas s'il me manque un paramètre pour activer l'automatisation JMP, j'inclus déjà tous les éléments liés à JMP dans la référence.


Re : Comment exécuter le script jsl dans Excel VBA ?Salut,
Vous ne pouvez pas mélanger les références d'objet entre JSL et Automation. Si vous avez besoin de référencer un objet comme une table de données, vous devez tout faire dans Automation ou tout en JSL.Il existe une méthode Join d'automatisation disponible pour les objets Datatable.Il existe également une méthode "AddToJoinList" pour ajouter les colonnes sur lesquelles vous souhaitez vous joindre.Le guide de référence Automation peut vous aider à cet égard, tout comme l'exemple de programme d'automatisation Datatable fourni avec JMP.Pour JMP 12, l'exemple de programme est disponible dans C:\Program Files\SAS\JMP\12\Samples\Automation\Visual Basic Samples\Data Table .NET. Le guide de référence Automation, "Automation Reference.pdf" est disponible dans C:\Program Files\SAS\JMP\12\Documentation.
J'espère que cela aide.
Brian Corcoran
Développement JMP