<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />您好,我正在查看 JMP 11 中包含的示例程序:
C:\Program Files\SAS\JMP\11\Samples\Automation\Visual Basic Samples\数据表.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
暗淡文档作为 JMP.Document
将 dt 调暗为 JMP.DataTable
Dim newDT As JMP.DataTable
将 dtDoc 调暗为 JMP.Document
将目录变暗为字符串
将 fname 变暗为字符串
'启动 JMP
设置 app = CreateObject("JMP.Application")
应用程序可见 = 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, False)
dt.SubsetStratifyAddColumn(“年龄”)
dt.AddToSubList(“名称”)
dt.AddToSubList(“权重”)
dt.AddToSubList(“高度”)
newDT = dt.子集
dtDoc = newDT.Document
dtDoc.SaveAs ("C:\JMP\subset.jmp")
结束子
'------------------------------------------------- --------
哇,JMP 安装目录中有很多好东西! 自动化参考 PDF 中的方法描述当然很有用。
关于我原来的问题:
- 需要“Set”关键字来将对象引用分配给变量。
- 您的评论和图片帮助我理解了子集代码。
再次感谢!
嗨,JB,
安装 JMP 11 的文档目录中安装了完整的自动化参考。如果您收到错误的引用,则意味着 JMP 无法启动(应用程序对象为空),或者无法找到 Big Class 数据表并且该引用为空。请记住,如果您使用 JMPPro,目录将是不同的 JMPPRO\11,而不是 JMP\11。其他 JMP 产品也是如此。
该样本正在做一个子集,随机样本大小为 2。设置了分层,年龄列用于分层样本。仅输出选定的列。在本例中,名称、身高和体重是选定的列。我附上一张图片,展示如果您以交互方式执行此操作,将会是什么样子。
我希望这有帮助,
布赖恩·科科伦
JMP开发