<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 & "大类.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开发