如何在 excel VBA 中運行 jsl 腳本?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嘗試在 excel VBA 環境中運行 jsl 腳本。該腳本的目的是打開兩個 csv 數據表並將它們連接在一起。
腳本如下:
子加載數據()
將 myjmp 調暗為 JMP.Application
將 jmp_doc 調暗為 JMP.Document
將 jmp_BL 調暗為 JMP.DataTable
將 jmp_dt 調暗為 JMP.DataTable
將 jmp_dtFinal 調暗為 JMP.DataTable
將 jmpstr 調暗為字符串
設置 myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
設置 jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\BL.csv")
設置 jmp_BL = jmp_doc.GetDataTable
設置 jmp_doc = myjmp.OpenDocument("C:\Users\xxxxx\Desktop\cbData.csv")
設置 jmp_dt = jmp_doc.GetDataTable
jmpstr = "jmp_dtFinal= jmp_dt << Join(With(jmp_BL),合併同名列,通過匹配列(:col1 = :col2, :col2= :col2),Drop multiples( 0, 1 ),Name( ""Include不匹配"" )(1, 1),);"
myjmp.RunCommand jmpstr
兩個數據表可以正確打開,但是只有join功能,不行。 有人可以幫忙寫劇本嗎?
謝謝你!
回复:如何在 excel VBA 中運行 jsl 腳本?是的,它將添加到 JMP 13 中。謝謝,
布萊恩
回复:如何在 excel VBA 中運行 jsl 腳本?,希望下個jmp版本加入。
謝謝你!
回复:如何在 excel VBA 中運行 jsl 腳本?抱歉,該選項尚未進入自動化。您可以使用自動化刪除結果表中的列。此外,如果您不介意將表合併到現有表之一,則可以改用 UpdateTable。
布萊恩
回复:如何在 excel VBA 中運行 jsl 腳本?嗨,布萊恩
非常感謝您提供的信息。
我還有一個關於此數據連接的問題。 當我如下設置連接匹配選項以刪除倍數並包括主表和表中的不匹配項時。
DT4.SetJoinMatchOptions 假,真
DT5.SetJoinMatchOptions 真,真
但是結果如下,好像這兩個表join了,但是並沒有和同名列合併。

通常在jmp數據表連接設置中,有一個選項“合併同名列”,如果勾選了那個,表將合併同名列。 但是在這個 VBA 中加入函數:
設置 NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "連接表")
沒有這樣的設置。
那麼你知道如何實現“合併同名欄”的功能嗎?
謝謝你!

回复:如何在 excel VBA 中運行 jsl 腳本?你好,
使用 VB 時,在 Visual Studio 中可以選擇對對象使用“Set”,因此示例並不總是使用它。它們也是為 Visual Studio 的早期版本(如 2010)使用而編寫的。顯然,Excel 中的 VBA 在語法方面有其獨特的怪癖。在您的情況下,它不希望在 SetJoinMatchOptions 的選項周圍加上括號。另一種方法是在它前面使用 Call。這是我的 Excel 2013 中的工作示例
'第二個示例是使用來自兩個類似列的匹配列的連接
'數據表。
將 Doc4 變暗為 JMP.Document
將 Doc5 調暗為 JMP.Document
將 NewDT2 調暗為 JMP.DataTable
將 DT4 調暗為 JMP.DataTable
將 DT5 調暗為 JMP.DataTable
設置 MyJMP = CreateObject("JMP.Application")
MyJMP.Visible = True
設置 Doc4 = MyJMP.OpenDocument("C:\Program Files\SAS\JMP\13\Samples\Data\Ingots.jmp")
設置 Doc5 = MyJMP.OpenDocument("C:\Program Files\SAS\JMP\13\Samples\Data\Ingots2.jmp")
設置 DT4 = Doc4.GetDataTable
設置 DT5 = Doc5.GetDataTable
DT4.AddToJoinMatchList (("Heat"))
DT4.AddToJoinMatchList (("浸泡"))
' 將選項設置為丟棄倍數並且不包括不匹配項
DT4.SetJoinMatchOptions 真、假
DT5.AddToJoinMatchList (("Heat"))
DT5.AddToJoinMatchList (("浸泡"))
DT5.SetJoinMatchOptions 真、假
設置 NewDT2 = DT4.Join(DT5, JMP.dtJoinConstants.dtJoinMatching, "連接表")
布萊恩
回复:如何在 excel VBA 中運行 jsl 腳本?嗨,布萊恩
可能我沒有描述清楚。
當我嘗試使用 Data Table .NET 中的示例來連接表時,我發現該示例無法正常工作。
例如:
當我打開一個數據表時,我不能只使用下面的腳本:
將 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(真,假) ”。 也許改變腳本如下:
將 str 調暗為 xxxxxx
設置海峽= DT4.SetJoinMatchOptions(真,假)
我不確定我的假設是否正確,只是不知道這個 JoinMatchOptions 可以如何設置。

回复:如何在 excel VBA 中運行 jsl 腳本?我會像示例那樣傳遞 False 和 True 而不是 0 和 1。但是,更有可能是您的 DT4 數據導入出現問題。我很難判斷該表是否已成功導入。
布賴恩·科科倫
JMP開發
回复:如何在 excel VBA 中運行 jsl 腳本?嗨,大腦
感謝您的信息。
這對我很有幫助。當我在引用 Data Table .NET 時遇到另一個問題。 Data Table .NET 中有一些示例。 我按照這個例子來完成我的腳本。
下面是數據表中的示例。 網
雖然我嘗試使用類似的方式,但似乎當我設置 JoinMatchOptions 時,總是出現錯誤。似乎我需要為此腳本設置一個變量。
雖然我找不到此 JoinMatchOptions 的任何幫助信息。 不確定我是否遺漏了啟用 JMP 自動化的任何設置,我已經在參考中包含了所有與 JMP 相關的項目。


回复:如何在 excel VBA 中運行 jsl 腳本?你好,
您不能在 JSL 和自動化之間混合對象引用。 如果需要引用數據表這樣的對象,必須全部用Automation或者全部用JSL。Datatable 對象可以使用自動化 Join 方法。還有一個“AddToJoinList”方法可以添加您希望加入的列。自動化參考指南可以幫助解決這個問題,JMP 附帶的數據表自動化示例程序也可以。對於 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開發