vbs createobject 与 getobject<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试在 powerpoint 中编写 VBS/VBA 脚本,该脚本将从正在运行的 JMP 会话中获取一些信息。
这是基本代码。
子测试()
将 myjmp 调暗为 JMP.Application
设置 myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
'一些测试运行jsl的代码
myjmp.RunCommand("transfer_data = 35;")
areaHeight = myjmp.GetJSLValue("transfer_data")
结束子
如果用户打开了使用开始菜单或桌面图标启动的 jmp 会话,则 JMP 会话将在脚本运行后保持打开状态。如果用户通过双击 .jmp 文件启动 JMP,则 JMP 会话将在脚本完成后关闭,即使其中没有 myjmp.quit 调用。
如何使 JMP 会话在这两种情况下都保持打开状态?
其他注意事项:
其他应用程序往往有类似 app.usercontrol = true 的内容,或者您可以使用 set myapp = GetObject(,"application") 来获取打开会话的对象。(GetObject(,"JMP.Application") 不适用于 JMP11)
这似乎没有做任何事情
myjmp.EnableInteractiveMode True
如果我创建一个空数据表,那么在脚本完成后,jmp 会话将保持打开状态。
设置 dt = myjmp.NewDataTable("")
JMP11.2.1 和 Windows 7。
回复:vbs createobject 与 getobject我最终从 VBS 中删除了所有 jmp 对象,并通过使用 JSL 创建临时 .vbs 文件来传递数据,该文件在 vbs 中设置一堆变量并读入它们。
子包含执行选项()
暗淡 fso, f
设置 fso = CreateObject("Scripting.FileSystemObject")
昏暗的临时文件夹
常量临时文件夹 = 2
设置临时文件夹 = fso.GetSpecialFolder(TemporaryFolder)
设置 f = fso.OpenTextFile(tempfolder & "\ExecuteOptions.vbs", 1)
str = f.ReadAll
f.关闭
调用 ExecuteGlobal(str)
结束子
无论 JMP 会话如何启动,此方法都会使 JMP 会话保持打开状态。
回复:vbs createobject 与 getobject这会失败,因为一旦 Visible 运行并且脚本完成,您的 myjmp 变量就会超出范围。您必须有一种方法来保持 VBS 脚本驻留并运行。
布莱恩
回复:vbs createobject 与 getobject你好,
我认为这不仅仅是由于函数的范围。
您可以编写一个 3 行 test.vbs 脚本,如下所示:
调暗 myjmp
设置 myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
您使用 cscript test.vbs 在命令行上运行它,您会得到相同的行为。如果从双击文件启动,会话将关闭,如果从开始菜单启动,会话将保持打开状态。
回复:vbs createobject 与 getobject嗨基思,
我认为您的 JMP 会话将会消失,因为您在函数范围内定义了 JMP.Application 变量。当它超出范围时,对象引用将被删除,这会告诉 JMP 关闭。如果您找到其他地方来定义该变量,它可能会保持打开状态。对于 Excel,在工作簿加载函数中定义它就可以了。我没有足够的 PowerPoint 经验来告诉您将其放在哪里。如果您采用这种方法,当您确实希望它消失时,您必须小心调用 JMP.Quit。
布赖恩·科科伦
JMP开发