vbs créer un objet contre obtenir un objet<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie d'écrire un script VBS/VBA dans PowerPoint qui obtiendra des informations à partir d'une session JMP en cours d'exécution.
Voici le code de base.
Sous-test()
Dim myjmp As JMP.Application
Set myjmp = CreateObject("JMP.Application")
monjmp.Visible = Vrai
'un code pour tester l'exécution de jsl
myjmp.RunCommand ("transfer_data = 35;")
areaHeight = myjmp.GetJSLValue("transfer_data")
Sous-titre de fin
Si l'utilisateur a ouvert une session jmp qui a été démarrée à l'aide du menu Démarrer ou de l'icône du bureau, la session JMP restera ouverte après l'exécution du script.Si l'utilisateur a démarré JMP en double-cliquant sur un fichier .jmp, la session JMP se fermera une fois le script terminé, même s'il n'y a pas d'appel myjmp.quit.
Comment puis-je faire en sorte que la session JMP reste ouverte dans les deux cas ?
Autres notes:
D'autres applications ont tendance à avoir quelque chose comme app.usercontrol = true ou vous pouvez utiliser set myapp = GetObject(,"application") pour obtenir un objet de la session ouverte.(GetObject(,"JMP.Application") ne fonctionne pas pour JMP11)
Cela ne semble rien faire
myjmp.EnableInteractiveMode Vrai
Si je crée une table de données vide, une fois le script terminé, la session jmp restera ouverte.
Set dt = myjmp.NewDataTable("")
JMP11.2.1 et Windows 7.
Re: vbs createobject vs getobjectJ'ai fini par supprimer tous les objets jmp de VBS et j'ai transmis les données en créant un fichier temporaire .vbs à l'aide de JSL qui définit un ensemble de variables dans vbs et les lit.
Sub IncludeExecuteOptions()
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Dim dossier temporaire
Const DossierTemporaire = 2
Set tempfolder = fso.GetSpecialFolder(TemporaryFolder)
Set f = fso.OpenTextFile(tempfolder & "\ExecuteOptions.vbs", 1)
str = f.ReadAll
f.Fermer
appeler ExecuteGlobal(str)
fin sous
Cette méthode laissait la session JMP ouverte, quelle que soit la manière dont elle avait été démarrée.
Re: vbs createobject vs getobjectCela échouerait, car dès que le Visible est exécuté et que le script se termine, votre variable myjmp sort de la portée.Vous devriez avoir un moyen de garder le script VBS résident et en cours d'exécution.
Brian
Re: vbs createobject vs getobjectSalut,
Je ne pense pas que cela soit simplement dû à la portée de la fonction.
Vous pouvez écrire un script test.vbs de 3 lignes comme ceci :
Estomper monjmp
Set myjmp = CreateObject("JMP.Application")
monjmp.Visible = Vrai
que vous exécutez sur la ligne de commande avec cscript test.vbs et vous obtenez le même comportement.Session fermée si démarrée à partir d'un double-clic sur un fichier, la session reste ouverte si démarrée à partir du menu Démarrer.
Re: vbs createobject vs getobjectSalut Keith,
Je pense que votre session JMP disparaît car la variable JMP.Application est définie dans le cadre de la fonction.Lorsqu'elle sort de la portée, la référence d'objet est supprimée, ce qui indique à JMP de s'arrêter.Si vous trouvez un autre endroit pour définir la variable, elle restera probablement ouverte.Pour Excel, le définir dans la fonction de chargement du classeur fonctionnerait.Je n'ai pas assez d'expérience avec PowerPoint pour vous dire où le mettre là.Si vous adoptez cette approche, vous devrez faire attention à appeler JMP.Quit lorsque vous voulez vraiment qu'il disparaisse.
Brian Corcoran
Développement JMP