vbs createobject vs getobject<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy tratando de escribir una secuencia de comandos VBS / VBA en powerpoint que obtendrá información de una sesión JMP en ejecución.
Aquí está el código básico.
Prueba secundaria ()
Dim myjmp As JMP.Application
Set myjmp = CreateObject ("JMP.Application")
myjmp.Visible = True
'Algún código para probar ejecutando jsl
myjmp.RunCommand ("transfer_data = 35;")
areaHeight = myjmp.GetJSLValue ("transfer_data")
End Sub
Si el usuario tiene una sesión jmp abierta que se inició utilizando el menú de inicio o el ícono del escritorio, la sesión JMP permanecerá abierta después de que se ejecute el script. Si el usuario inició JMP haciendo doble clic en un archivo .jmp, la sesión JMP se cerrará una vez que finalice el script aunque no haya ninguna llamada myjmp.quit allí.
¿Cómo hago que la sesión JMP permanezca abierta en ambos casos?
Otras notas:
Otras aplicaciones tienden a tener algo como app.usercontrol = true o puedes usar set myapp = GetObject (, "application") para obtener un objeto de la sesión abierta. (GetObject (, "JMP.Application") no funciona para JMP11)
Esto no parece hacer nada.
myjmp.EnableInteractiveMode True
Si creo una tabla de datos vacía, una vez finalizada la secuencia de comandos, la sesión jmp permanecerá abierta.
Establecer dt = myjmp.NewDataTable ("")
JMP11.2.1 y Windows 7.
Re: vbs createobject vs getobjectTerminé eliminando todos los objetos jmp de VBS y pasé los datos creando un archivo temporal .vbs utilizando JSL que establece un conjunto de variables en vbs y las lee.
Sub IncludeExecuteOptions ()
Dim fso, f
Establecer fso = CreateObject ("Scripting.FileSystemObject")
Tenue tempfolder
Const TemporaryFolder = 2
Establecer tempfolder = fso.GetSpecialFolder (TemporaryFolder)
Establecer f = fso.OpenTextFile (tempfolder & "\ ExecuteOptions.vbs", 1)
str = f.ReadAll
f.cerrar
llamar ExecuteGlobal (str)
final Sub
Este método dejó abierta la sesión JMP sin importar cómo se inició.
Re: vbs createobject vs getobjectEso fallaría, porque tan pronto como se ejecuta el Visible y la secuencia de comandos completa su variable myjmp queda fuera del alcance. Tendría que tener una forma de mantener el script VBS residente y en ejecución.
Brian
Re: vbs createobject vs getobjectHola,
No creo que sea solo por el alcance de la función.
Puedes escribir un script de 3 líneas test.vbs como este:
Dim myjmp
Set myjmp = CreateObject ("JMP.Application")
myjmp.Visible = True
que ejecuta en la línea de comandos con cscript test.vbs y obtiene el mismo comportamiento. La sesión se cierra si se inicia desde un doble clic en un archivo, la sesión permanece abierta si se inicia desde el menú de inicio.
Re: vbs createobject vs getobjectHola keith
Creo que su sesión JMP se va a ir porque tiene la variable JMP.Application definida dentro del alcance de la función. Cuando queda fuera del alcance, la referencia del objeto se elimina, lo que le dice a JMP que se apague. Si encuentra en otro lugar para definir la variable, probablemente se mantendrá abierta. Para Excel, tenerlo definido en la función de carga del libro de trabajo funcionaría. No tengo suficiente experiencia con PowerPoint para decirle dónde colocarlo. Si realiza este enfoque, deberá tener cuidado de llamar a JMP.Quit cuando realmente desee que desaparezca.
Brian Corcoran
Desarrollo JMP