Excel VBAでjslスクリプトを実行するには?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Excel VBA環境でjslスクリプトを実行してみてください。スクリプトの目的は、2 つの csv データ テーブルを開き、それらを結合することです。
スクリプトは以下が好きです:
サブ loadData()
JMP.Application として myjmp を暗くする
jmp_doc を JMP.Document として暗くする
jmp_BL を JMP.DataTable として暗くする
Dim jmp_dt As JMP.DataTable
Dim jmp_dtFinal As JMP.DataTable
Dim jmpstr を文字列として
myjmp = CreateObject("JMP.Application") を設定します。
myjmp.Visible = True
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\BL.csv")
jmp_BL = jmp_doc.GetDataTable を設定します。
Set jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\cbData.csv")
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不一致"" )(1, 1),);"
myjmp.RunCommand jmpstr
2 つのデータ テーブルは正しく開くことができますが、結合機能のみが機能しません。 スクリプトを手伝ってくれる人はいますか?
ありがとう!
Re: Excel VBAでjslスクリプトを実行する方法は?はい、JMP 13 で追加されます。よろしくお願いします。
ブライアン
Re: Excel VBAでjslスクリプトを実行する方法は?、次のjmpバージョンで追加されることを願っています。
ありがとう!
Re: Excel VBAでjslスクリプトを実行する方法は?申し訳ありませんが、そのオプションはまだ自動化されていません。自動化を使用して、結果表の列を削除できます。また、テーブルを既存のテーブルの 1 つにマージしても構わない場合は、代わりに UpdateTable を使用できる場合があります。
ブライアン
Re: Excel VBAでjslスクリプトを実行する方法は?こんにちは、ブライアン
情報をありがとうございました。
このデータ結合についてもう 1 つ質問があります。 Join Match Options を以下のように設定して、メイン テーブルと with テーブルの両方で倍数を削除し、非一致を除外します。
DT4.SetJoinMatchOptions False、True
DT5.SetJoinMatchOptions True、True
しかし、結果は次のようになります。これら 2 つのテーブルは結合されているようですが、同じ名前の列とはマージされませんでした。

通常、jmpデータのテーブル結合設定には、「同名列を結合」というオプションが1つあり、これにチェックを入れると、テーブルは同名の列を結合します。 しかし、この VBA 結合機能では:
NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "結合テーブル") を設定します。
そのような設定はありません。
では、「nerge同名列」の機能を実現する方法を知っていますか?
ありがとう!

Re: Excel VBAでjslスクリプトを実行する方法は?やあ、
VB を使用する場合、Visual Studio ではオブジェクトの "Set" の使用をオプションにすることができるため、サンプルでは常に使用するとは限りません。また、2010 などの Visual Studio の初期バージョンで使用するために作成されたものでもあります。Excel の VBA には、構文に関する独自の癖があるようです。あなたの場合、SetJoinMatchOptions のオプションを括弧で囲む必要はありません。別の方法は、その前に Call を使用することです。これは私のExcel 2013からの実用的なサンプルです
' 2 番目の例は、次のような 2 つの一致する列を使用した結合です
'データテーブル。
Dim Doc4 を JMP.Document として
Dim Doc5 を JMP.Document として
NewDT2 を JMP.DataTable として暗くする
DT4 を JMP.DataTable として暗くする
JMP.DataTable として Dim DT5
Set MyJMP = CreateObject("JMP.Application")
MyJMP.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")
DT4 = Doc4.GetDataTable を設定します。
DT5 = Doc5.GetDataTable を設定します。
DT4.AddToJoinMatchList (("熱"))
DT4.AddToJoinMatchList (("ソーク"))
' オプションを [複数をドロップ] および [一致しないものを含めない] に設定します
DT4.SetJoinMatchOptions True、False
DT5.AddToJoinMatchList (("熱"))
DT5.AddToJoinMatchList (("ソーク"))
DT5.SetJoinMatchOptions True、False
NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "結合テーブル") を設定します。
ブライアン
Re: Excel VBAでjslスクリプトを実行する方法は?こんにちは、ブライアン
たぶん、私はそれを明確に説明していませんでした。
データ テーブル .NET の例を使用してテーブルを結合しようとすると、例が正しく機能しないことがわかりました。
例えば:
データ テーブルを開くと、以下のスクリプトしか使用できません。
Dim Doc4 を JMP.Document として
DT4 を JMP.DataTable として暗くする
Doc4 = MyJMP.OpenDocument(tempDir & "cbData.csv")
DT4 = Doc4.GetDataTable
代わりに、以下のようにスクリプトの開始時に Set を追加する必要があります。
設定Doc4 = MyJMP.OpenDocument(tempDir & "cbData")
設定DT4 = Doc4.GetDataTable
その後、両方のデータ テーブルが正しくインポートできます。
結合一致オプションを設定するときに、以下のスクリプトを使用すると、次のようになります。
DT4.SetJoinMatchOptions(真、偽)
常にエラーが発生します。これも変数に送信する必要があるようです。 しかし、「の戻り値の型が何であるかはよくわかりません」 DT4.SetJoinMatchOptions(真、偽) "。 以下のようにスクリプトを変更してください。
暗い文字列を xxxxxx として
設定 str= DT4.SetJoinMatchOptions(真、偽)
私の仮定が正しいかどうかはわかりませんが、この JoinMatchOptions がどのように設定できるかわかりません。

Re: Excel VBAでjslスクリプトを実行する方法は?例のように、0 と 1 ではなく、False と True を渡します。ただし、DT4 のデータのインポートに問題がある可能性が高くなります。そのテーブルが正常にインポートされたかどうかを判断するのは困難です。
ブライアン・コーコラン
JMP開発
Re: Excel VBAでjslスクリプトを実行する方法は?ハイ、ブレイン
情報をくれてありがとう。
これは私にとって役に立ちます。 Data Table .NET を参照すると、別の問題が発生します。 Data Table .NET にいくつかの例があります。 そして、例に従ってスクリプトを完成させます。
以下は、DATA テーブルの例です。 ネット
同様の方法を使用しようとしていますが、 JoinMatchOptions を設定すると、常にエラーが発生するようです。このスクリプトの変数を設定する必要があるようです。
この JoinMatchOptions に関するヘルプ情報が見つかりません。 JMP 自動化を有効にするための設定が欠けているかどうかはわかりませんが、参照にはすべての JMP 関連項目が既に含まれています。


Re: Excel VBAでjslスクリプトを実行する方法は?やあ、
JSL と自動化の間でオブジェクト参照を混在させることはできません。 データ テーブルなどのオブジェクトを参照する必要がある場合は、すべてオートメーションで行うか、すべて JSL で行う必要があります。Datatable オブジェクトで使用できるオートメーション Join メソッドがあります。結合したい列を追加する「AddToJoinList」メソッドもあります。自動化リファレンス ガイドは、JMP に同梱されている Datatable 自動化サンプル プログラムと同様に、これに役立ちます。JMP 12 の場合、サンプル プログラムは C:\Program Files\SAS\JMP\12\Samples\Automation\Visual Basic Samples\Data Table .NET にあります。 自動化リファレンス ガイド「Automation Reference.pdf」は、C:\Program Files\SAS\JMP\12\Documentation にあります。
それが役立つことを願っています。
ブライアン・コーコラン
JMP開発