vbs createobject vs. getobject<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich versuche, ein VBS/VBA-Skript in Powerpoint zu schreiben, das einige Informationen aus einer laufenden JMP-Sitzung erhält.
Hier ist der Basiscode.
Untertest()
Dimmen Sie myjmp als JMP.Application
Setze myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
'etwas Code zum Testen der Ausführung von JSL
myjmp.RunCommand ("transfer_data = 35;")
areaHeight = myjmp.GetJSLValue("transfer_data")
End Sub
Wenn der Benutzer eine JMP-Sitzung geöffnet hat, die über das Startmenü oder das Desktopsymbol gestartet wurde, bleibt die JMP-Sitzung nach der Ausführung des Skripts geöffnet.Wenn der Benutzer JMP durch einen Doppelklick auf eine .jmp-Datei gestartet hat, wird die JMP-Sitzung nach Abschluss des Skripts geschlossen, auch wenn dort kein myjmp.quit-Aufruf vorhanden ist.
Wie sorge ich dafür, dass die JMP-Sitzung in beiden Fällen geöffnet bleibt?
Weitere Hinweise:
Andere Anwendungen neigen dazu, so etwas wie app.usercontrol = true zu haben, oder Sie können set myapp = GetObject(,"application") verwenden, um ein Objekt der offenen Sitzung abzurufen.(GetObject(,"JMP.Application") funktioniert nicht für JMP11)
Das scheint nichts zu bewirken
myjmp.EnableInteractiveMode True
Wenn ich eine leere Datentabelle erstelle, bleibt die JMP-Sitzung nach Abschluss des Skripts geöffnet.
Setze dt = myjmp.NewDataTable("")
JMP11.2.1 und Windows 7.
Betreff: vbs createobject vs. getobjectAm Ende habe ich alle JMP-Objekte aus VBS entfernt und die Daten übergeben, indem ich mit JSL eine temporäre VBS-Datei erstellt habe, die eine Reihe von Variablen in VBS festgelegt und eingelesen hat.
Sub IncludeExecuteOptions()
Dim fso, f
Setze fso = CreateObject("Scripting.FileSystemObject")
Temporären Ordner dimmen
Const TemporaryFolder = 2
Set tempfolder = fso.GetSpecialFolder(TemporaryFolder)
Setze f = fso.OpenTextFile(tempfolder & "\ExecuteOptions.vbs", 1)
str = f.ReadAll
f.Schließen
Aufruf ExecuteGlobal(str)
End Sub
Bei dieser Methode blieb die JMP-Sitzung geöffnet, unabhängig davon, wie sie gestartet wurde.
Betreff: vbs createobject vs. getobjectDas würde fehlschlagen, denn sobald Visible ausgeführt wird und das Skript abgeschlossen ist, verlässt Ihre myjmp-Variable den Gültigkeitsbereich.Sie müssten eine Möglichkeit haben, das VBS-Skript resident und laufend zu halten.
Brian
Betreff: vbs createobject vs. getobjectHallo,
Ich glaube nicht, dass es nur am Umfang der Funktion liegt.
Sie können ein dreizeiliges test.vbs-Skript wie folgt schreiben:
Dim myjmp
Setze myjmp = CreateObject("JMP.Application")
myjmp.Visible = True
die Sie in der Befehlszeile mit cscript test.vbs ausführen und das gleiche Verhalten erhalten.Die Sitzung wird geschlossen, wenn sie durch einen Doppelklick auf eine Datei gestartet wird. Die Sitzung bleibt geöffnet, wenn sie über das Startmenü gestartet wird.
Betreff: vbs createobject vs. getobjectHallo Keith,
Ich denke, Ihre JMP-Sitzung wird unterbrochen, weil Sie die JMP.Application-Variable im Rahmen der Funktion definiert haben.Wenn der Gültigkeitsbereich verlassen wird, wird die Objektreferenz gelöscht, wodurch JMP angewiesen wird, herunterzufahren.Wenn Sie einen anderen Ort finden, an dem Sie die Variable definieren können, bleibt sie wahrscheinlich offen.Für Excel würde es funktionieren, wenn es in der Funktion „Arbeitsmappenladen“ definiert wäre.Ich habe nicht genug Erfahrung mit PowerPoint, um Ihnen sagen zu können, wo ich es dort platzieren soll.Wenn Sie diesen Ansatz wählen, müssen Sie vorsichtig sein, JMP.Quit aufzurufen, wenn Sie wirklich möchten, dass es verschwindet.
Brian Corcoran
JMP-Entwicklung