Wie führe ich ein JSL-Skript in Excel VBA aus?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Versuchen Sie, das JSL-Skript in der Excel-VBA-Umgebung auszuführen. Der Zweck des Skripts besteht darin, zwei CSV-Datentabellen zu öffnen und sie zusammenzuführen.
das Skript mag unten:
Sub-loadData()
Dim myjmp Als JMP.Application
Dim jmp_doc Als JMP.Document
Dim jmp_BL als JMP.DataTable
Dim jmp_dt als JMP.DataTable
Dim jmp_dtFinal als JMP.DataTable
Dim jmpstr als Zeichenfolge
Set myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\BL.csv")
Setzen Sie jmp_BL = jmp_doc.GetDataTable
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\cbData.csv")
Setzen Sie jmp_dt = jmp_doc.GetDataTable
jmpstr = "jmp_dtFinal= jmp_dt << Join(With(jmp_BL),Spalten mit gleichem Namen zusammenführen,Durch Übereinstimmung von Spalten( :col1 = :col2, :col2= :col2),Drop multiples( 0, 1 ),Name( ""Include keine Übereinstimmungen"" )(1, 1),);"
myjmp.RunCommand jmpstr
Die beiden Datentabellen können korrekt geöffnet werden, aber nur die Join-Funktion, es funktioniert nicht. Kann jemand beim Drehbuch helfen?
Danke schön!
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Ja, es wird in JMP 13 hinzugefügt. Danke,
Brian
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?, in der Hoffnung, dass es in der nächsten jmp-Version hinzugefügt wird.
Danke schön!
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Es tut mir leid, aber diese Option hat es noch nicht in die Automatisierung geschafft.Sie können die Spalten in der Ergebnistabelle mithilfe der Automatisierung löschen.Wenn es Ihnen nichts ausmacht, die Tabelle mit einer der vorhandenen Tabellen zusammenzuführen, können Sie stattdessen möglicherweise UpdateTable verwenden.
Brian
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Hallo Brian
Vielen Dank für Ihre Informationen.
Ich habe noch eine Frage zu dieser Datenverknüpfung. Wenn ich die Join-Match-Optionen wie unten eingestellt habe, um Multiples zu löschen und Nicht-Matches sowohl in Haupt- als auch in With-Tischen zu schließen.
DT4.SetJoinMatchOptions Falsch, Wahr
DT5.SetJoinMatchOptions True, True
Aber das Ergebnis kommt wie folgt heraus, scheint, dass diese beiden Tabellen verbunden sind, aber nicht mit der Spalte mit dem gleichen Namen zusammengeführt wurden.

Normalerweise gibt es in der JMP-Datentabellen-Join-Einstellung eine Option "Spalte mit demselben Namen zusammenführen". Wenn Sie diese Option aktivieren, wird die Tabelle Spalten mit demselben Namen zusammenführen. Aber in dieser VBA-Join-Funktion:
Set NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "Join-Tabelle")
Eine solche Einstellung gibt es nicht.
Wissen Sie also, wie Sie die Funktion "Spalte mit demselben Namen nerge" erreichen?
Danke!

Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Hallo,
Die Verwendung von „Set“ für Objekte kann in Visual Studio optional sein, wenn VB verwendet wird, sodass es in den Beispielen nicht immer verwendet wird.Sie wurden auch für die Verwendung durch frühe Versionen von Visual Studio wie 2010 geschrieben. Anscheinend hat VBA in Excel seine eigenen einzigartigen Macken in der Syntax.In Ihrem Fall sind keine Klammern um die Optionen für SetJoinMatchOptions erforderlich.Eine Alternative ist die Verwendung von Call davor.Hier ist ein funktionierendes Beispiel aus meinem Excel 2013
„Das zweite Beispiel ist ein Join, bei dem übereinstimmende Spalten von zwei ähnlichen Elementen verwendet werden
'Datentabellen.
Dim Doc4 als JMP.Document
Dim Doc5 als JMP.Document
Dim NewDT2 As JMP.DataTable
Dim DT4 als JMP.DataTable
Dim DT5 als JMP.DataTable
Set MyJMP = CreateObject("JMP.Application")
MeinJMP.Visible = True
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")
Setzen Sie DT4 = Doc4.GetDataTable
Legen Sie DT5 = Doc5.GetDataTable fest
DT4.AddToJoinMatchList ("Heat"))
DT4.AddToJoinMatchList ("Soak"))
' Legen Sie die Optionen auf Multiples verwerfen und Nichtübereinstimmungen nicht einbeziehen fest
DT4.SetJoinMatchOptions True, False
DT5.AddToJoinMatchList ("Heat"))
DT5.AddToJoinMatchList ("Soak"))
DT5.SetJoinMatchOptions True, False
Set NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "Join-Tabelle")
Brian
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Hallo Brian
Vielleicht habe ich es nicht klar beschrieben.
Wenn ich versuche, das Beispiel in Data Table .NET zu verwenden, um Tabellen zu verbinden, habe ich festgestellt, dass das Beispiel nicht richtig funktionieren kann.
Zum Beispiel:
Wenn ich eine Datentabelle öffne, kann ich nicht nur das folgende Skript verwenden:
Dim Doc4 als JMP.Document
Dim DT4 als JMP.DataTable
Doc4 = MeinJMP.OpenDocument(tempDir & "cbData.csv")
DT4 = Doc4.GetDataTable
Stattdessen muss ich Set am Anfang der Skripte wie folgt hinzufügen:
Satz Doc4 = MeinJMP.OpenDocument(tempDir & "cbData")
Satz DT4 = Doc4.GetDataTable
Danach können beide Datentabellen korrekt importiert werden.
während, wenn Sie die Join-Matching-Optionen festlegen, wenn ich das folgende Skript verwende:
DT4.SetJoinMatchOptions(Wahr, Falsch)
Es gibt immer einen Fehler, anscheinend muss ich dies auch an eine Variable senden. Aber ich bin mir nicht ganz sicher, was der Typ des Rückgabewerts von " DT4.SetJoinMatchOptions(Wahr, Falsch) ". Vielleicht ändern Sie das Skript wie folgt:
Dimstr als xxxxxx
setze str= DT4.SetJoinMatchOptions(Wahr, Falsch)
Ich bin mir nicht sicher, ob meine Annahme richtig ist oder nicht, ich weiß nur nicht, wie diese JoinMatchOptions gesetzt werden können.

Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Ich würde False und True statt 0 und 1 übergeben, wie es im Beispiel der Fall ist.Es ist jedoch wahrscheinlicher, dass es ein Problem mit dem Import Ihrer Daten für DT4 gibt. Es ist schwierig für mich zu sagen, ob diese Tabelle erfolgreich importiert wurde.
Brian Corcoran
JMP-Entwicklung
Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Hallo Gehirn
Danke für Ihre Information.
Das ist hilfreich für mich. während ich ein anderes Problem habe, wenn ich auf die Datentabelle .NET verweise. Es gibt einige Beispiele in Data Table .NET. Und ich folge dem Beispiel, um mein Drehbuch fertigzustellen.
Unten ist das Beispiel in der DATA-Tabelle. NETZ
Ich versuche zwar, den ähnlichen Weg zu verwenden, aber wenn ich die JoinMatchOptions setze, scheint es immer einen Fehler zu geben. Anscheinend muss ich eine Variable für dieses Skript festlegen.
während ich keine Hilfeinformationen für diese JoinMatchOptions finden kann. Ich bin mir nicht sicher, ob ich eine Einstellung vermisse, um die JMP-Automatisierung zu aktivieren, ich habe bereits alle JMP-bezogenen Elemente in die Referenz aufgenommen.


Re: Wie führe ich ein JSL-Skript in Excel VBA aus?Hallo,
Sie können Objektverweise nicht zwischen JSL und Automatisierung mischen. Wenn Sie auf ein Objekt wie eine Datentabelle verweisen müssen, müssen Sie dies vollständig in Automation oder vollständig in JSL tun.Für Datatable-Objekte steht eine automatisierte Join-Methode zur Verfügung.Es gibt auch eine "AddToJoinList"-Methode, um die Spalten hinzuzufügen, denen Sie beitreten möchten.Das Automatisierungs-Referenzhandbuch kann dabei helfen, ebenso wie das Datatable-Automatisierungsbeispielprogramm, das mit JMP geliefert wird.Für JMP 12 ist das Beispielprogramm unter C:\Programme\SAS\JMP\12\Samples\Automation\Visual Basic Samples\Data Table .NET verfügbar. Das Automatisierungs-Referenzhandbuch „Automation Reference.pdf“ ist unter C:\Program Files\SAS\JMP\12\Documentation verfügbar.
Ich hoffe das hilft.
Brian Corcoran
JMP-Entwicklung