<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />您好,我正在查看 JMP 11 中包含的示例程序:
C:\Program Files\SAS\JMP\11\Samples\Automation\Visual Basic Samples\Data Table .NET\datatab.vb
由於我沒有 Visual Studio(只有 Excel),我用記事本打開了“datatab.vb”並試圖將“Subset_Click”過程從 Visual Basic (VB) 轉換為 Visual Basic for Applications (VBA)。 請參閱下面的代碼示例。
我有幾個問題:
- 為什麼“doc = app.OpenDocument(fname)”會導致運行時錯誤“未設置對像變量”?
- 數據表子集方法如何工作? 我可以在 Excel VBA 對象瀏覽器中看到這些,但沒有太多細節。
- 如何使用數據表句柄?
感謝您的幫助。
'------------------------------------------------ ------
'按體重和身高劃分大類
'在 NewDT 中保存新的數據表句柄,然後將表作為 subset.jmp 保存到磁盤
'------------------------------------------------ ------
子集()
將應用程序調暗為 JMP.Application
Dim doc 作為 JMP.Document
將 dt 調暗為 JMP.DataTable
將 newDT 調暗為 JMP.DataTable
將 dtDoc 調暗為 JMP.Document
將目錄調暗為字符串
將 fname 調暗為字符串
'啟動 JMP
設置 app = CreateObject("JMP.Application")
app.Visible = True
'獲取數據表
dir = "C:\Program Files\SAS\JMP\11\Samples\Data\"
fname = dir & "Big Class.jmp"
doc = app.OpenDocument(fname)
dt = doc.GetDataTable
'子集數據
dt.激活
dt.SubsetSetRandomSelection(2,假)
dt.SubsetStratifyAddColumn("年齡")
dt.AddToSubList("名稱")
dt.AddToSubList("權重")
dt.AddToSubList("高度")
newDT = dt.子集
dtDoc = newDT.文檔
dtDoc.SaveAs ("C:\JMP\subset.jmp")
結束子
'------------------------------------------------ ------
哇,JMP 安裝目錄中有很多好東西! Automation Reference PDF 中的方法描述當然很有用。
關於我原來的問題:
- 需要“Set”關鍵字來將對象引用分配給變量。
- 您的評論和圖片幫助我理解了子集代碼。
再次感謝!
嗨,傑比,
在安裝 JMP 11 的文檔目錄中安裝了完整的自動化參考。如果您得到一個錯誤的引用,這意味著 JMP 無法啟動(App 對象為空)或者它找不到大類數據表並且該引用為空。請記住,如果您使用的是 JMPPro,目錄將是不同的 JMPPRO\11,而不是 JMP\11。其他 JMP 產品也是如此。
此樣本正在做一個子集,隨機樣本大小為 2。分層已設置,年齡列用於分層樣本。只有選定的列將被輸出。在本例中,姓名、身高和體重是選定的列。我附上了一張圖片,說明如果您以交互方式執行此操作會是什麼樣子。
我希望這有幫助,
布賴恩·科科倫
JMP開發