vbs createobject vs getobject<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di scrivere uno script VBS / VBA in powerpoint che otterrà alcune informazioni da una sessione JMP in esecuzione.
Ecco il codice di base.
Sottotest ()
Dim myjmp As JMP.Application
Imposta myjmp = CreateObject ("JMP.Application")
myjmp.Visible = True
'un codice per testare jsl in esecuzione
myjmp.RunCommand ("transfer_data = 35;")
areaHeight = myjmp.GetJSLValue ("transfer_data")
End Sub
Se l'utente ha una sessione jmp aperta che è stata avviata utilizzando il menu Start o l'icona sul desktop, la sessione JMP rimarrà aperta dopo l'esecuzione dello script. Se l'utente ha avviato JMP facendo doppio clic su un file .jmp, la sessione JMP verrà chiusa al termine dello script anche se non vi è alcuna chiamata myjmp.quit.
Come faccio a mantenere aperta la sessione JMP in entrambi i casi?
Altre note:
Altre applicazioni tendono ad avere qualcosa come app.usercontrol = true oppure puoi usare set myapp = GetObject (, "application") per ottenere un oggetto della sessione aperta. (GetObject (, "JMP.Application") non funziona per JMP11)
Questo non sembra fare nulla
myjmp.EnableInteractiveMode True
Se creo una tabella di dati vuota, dopo la fine dello script la sessione jmp rimarrà aperta.
Imposta dt = myjmp.NewDataTable ("")
JMP11.2.1 e Windows 7.
Ri: vbs createobject vs getobjectHo finito per rimuovere tutti gli oggetti jmp da VBS e ho passato i dati creando un file .vbs temp usando JSL che impostava un gruppo di variabili in vbs e li leggeva dentro.
Sub IncludeExecuteOptions ()
Dim fso, f
Imposta fso = CreateObject ("Scripting.FileSystemObject")
Dim tempfolder
Const TemporaryFolder = 2
Imposta tempfolder = fso.GetSpecialFolder (TemporaryFolder)
Imposta f = fso.OpenTextFile (tempfolder e "\ ExecuteOptions.vbs", 1)
str = f.ReadAll
f.close
chiama ExecuteGlobal (str)
fine Sub
Questo metodo ha lasciato aperta la sessione JMP, indipendentemente dal modo in cui è stata avviata.
Ri: vbs createobject vs getobjectCiò fallirebbe, poiché non appena viene eseguito Visible e lo script termina la tua variabile myjmp diventa fuori portata. Dovresti avere un modo per mantenere lo script VBS residente e funzionante.
Brian
Ri: vbs createobject vs getobjectCiao,
Non penso sia dovuto solo alla portata della funzione.
Puoi scrivere uno script test.vbs in 3 righe come questo:
Dim myjmp
Imposta myjmp = CreateObject ("JMP.Application")
myjmp.Visible = True
che si esegue sulla riga di comando con cscript test.vbs e si ottiene lo stesso comportamento. Sessione chiusa se avviata da un doppio clic su un file, la sessione rimane aperta se avviata dal menu di avvio.
Ri: vbs createobject vs getobjectCiao Keith,
Penso che la tua sessione JMP stia andando via perché hai la variabile JMP.Application definita nell'ambito della funzione. Quando esce dall'ambito, il riferimento all'oggetto viene cancellato, il che indica a JMP di spegnersi. Se trovi qualcos'altro per definire la variabile, probabilmente rimarrà aperta. Per Excel, se avesse definito nella funzione Carica cartella di lavoro avrebbe funzionato. Non ho abbastanza esperienza con PowerPoint per dirti dove metterlo lì. Se fai questo approccio, dovrai stare attento a chiamare JMP.Quit quando vuoi davvero che vada via.
Brian Corcoran
Sviluppo JMP