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開發