Ciao a tutti,
Cercando di raccogliere le tue idee qui e vedere quale sarebbe il percorso migliore per questa idea.
L'idea è quella di poter prendere tutti i grafici/trame da uno script e inserirli in PowerPoint. Vorrei personalizzarlo per poter trascinare i grafici sulla diapositiva e posizionarli, insieme al testo, all'esterno di PowerPoint e quindi spingerli in PowerPoint.
Al momento ho fatto la prima parte in modo rozzo. Utilizzando Application Builder sono stato in grado di creare un'app in cui richiede all'utente uno script, esegue lo script, prende tutte le finestre aperte dallo script, le inserisce in un elenco in cui l'utente è in grado di selezionare quali grafici visualizzare al PPT.
Successivamente, ho un VBscript che viene chiamato quando l'utente sceglie un modello. Qualsiasi grafico salvato in HTML crea una cartella GFX con il contenuto di quel grafico e lo script VB cattura il contenuto di quella cartella GFX e lo inserisce in PowerPoint.
È molto rozzo, un grafico per diapositiva l'utente deve aggiungere testo in PowerPoint.
La mia domanda è se pensi che sia la direzione giusta da prendere. Ieri ho parlato con alcune persone a JMP e mi hanno detto che un altro percorso da esaminare è l'utilizzo di R. Non ho alcuna esperienza con R, ma se fosse un percorso migliore/più efficiente da intraprendere, lo esaminerei.
Per espandere il mio lavoro attuale, forse potrei semplicemente fare in modo che l'utente possa selezionare in quale parte del PowerPoint posizionare il grafico, insieme al testo. Ma non sarei sicuro di come passarlo allo script VB.
Grazie in anticipo per qualsiasi aiuto o idea. Tutto è il benvenuto.
-Opaco
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />ok, l'ho fatto per me, eccoti qui
questi sono moduli singoli, inseriscili in un ciclo più ampio o usali come preferisci (e perdona il mio inglese...)
*esporta da jmp - immagine
genera il tuo grafico come al solito, creando un riferimento ad esso (ad esempio
riferimento_grafo = datatable <
quindi salva l'immagine come al solito
graph_reference <
*esporta da jmp - testo
solo per testare inserisci qualcosa nelle tue variabili, il vero utilizzo sarà quello di far sì che contengano le informazioni che devi esportare
string_containing_title1 = "prima riga";
string_containing_title2 = "\!Nseconda riga";
Salva file di testo ("titles.txt", string_containing_title1, modalità ("sostituisci"));
Salva file di testo ("titles.txt", string_containing_title2, modalità ("append"));
e ora che hai immagini e testo, puoi importarli direttamente in powerpoint (fai attenzione al formato .pptm, alla sicurezza delle macro e cose del genere...)
questo è il codice VBA che importa un'immagine e la posiziona
' diapositive delle variabili di definizione
Dim oSlide come diapositiva
Dim numero come numero intero
Immagine attenuata come forma
' immagini delle variabili di definizione
Dim ImgFolder come stringa: ImgFolder = "C:\Users\john_ronald_reuel\Documents\toy_box\pet01\test_im\"
Dim piazza1 come stringa
Dim file1 come stringa
' valore impostato a scopo di test, per uso reale crea un ciclo per definirli, qui inseriamo 5831_pie.jpg nella diapositiva 02
file1 = "5831_torta.jpg"
numero = 2
'creando il percorso completo per i file di immagine
piazza1 = (Cartella Img e file1)
' impostando la diapositiva 02 come attiva
Imposta oSlide = ActiveWindow.Presentation.Slides(numero)
' posiziona l'immagine, senza collegamento, con salvataggio, alle coordinate 10,10 dall'alto a sinistra, senza ridimensionamento
Imposta oPicture = oSlide.Shapes.AddPicture(piazza1, msoFalse, msoTrue, 10, 10)
' modifica: usa ritaglio e altri per ritagliare, posizionare o ridimensionare.
Con ActivePresentation.PageSetup
oPicture.PictureFormat.CropBottom = 30
oAltezza.immagine = 450
oImmagine.Sinistra = 450
Termina con
note a questo:
*puoi utilizzare il percorso relativo con questo codice --> ImgFolder = ActivePresentation.Path & "\output\"
*l'editing delle immagini è sequenziale e non ama i numeri negativi: se vuoi ritagliare 40 e finire a 10, non puoi iniziare a -30 e ritagliare e fermarti, ma devi iniziare a 10, ritaglia e poi dopo l'uso a sinistra (o in alto )
*piazza e numero servono per rendere il codice non cablato, ma si tratta di un modulo singolo. è meglio usare un ciclo e un array per memorizzare i nomi delle immagini e i numeri delle diapositive
ed ecco il codice per caricare le informazioni esportate da jmp e inserirle in un array, ogni riga va a un elemento dell'array
'variabili di definizione per ciclo
Dim ilivelli As Integer
Dim i come numero intero
Dim temp come stringa
'variabili di definizione per file di testo
Dim cartella indice come stringa
Dim ImgFolder come stringa
Dim sFileName come stringa
Dim iFileNum come numero intero
'cartella delle definizioni
cartellaindice = "C:\Users\john_ronald_reuel\Documenti\toy_box\pet01\config\"
'definizione array dinamico, conterrà le righe del file di testo
Dim sparam() come stringa
'ridimensionarlo in grande
ReDim sparam(75) As String
'definisci il nome del file
sFileName = cartella indice e "livelli_DD.txt"
'carica il file
iFileNum = FreeFile()
Apri sFileName per l'input come iFileNum
'cicle do EOF: carica la riga i-eth, la mette in temp, poi la assegna all'i-eth elemento dell'array, poi aggiorna l'intero ilivelli
io = 1
Esegui mentre non EOF(iFileNum)
Ingresso linea #iFileNum, temp
sparam(i) = CStr(temp)
ilivelli = i
io = io + 1
Ciclo continuo
'ridimensiona l'array al numero corretto di righe, senza cancellarlo
ReDim Preserve sparam(ilivelli)
'chiudi il file originale
Chiudi iFileNum
questo funziona per me, spero che aiuti!
Grazie per tutte le informazioni m477. Stavo cercando di mantenerlo autonomo in JMP, creando semplicemente un componente aggiuntivo che avrei potuto installare su qualsiasi macchina con JMP e renderlo in grado di funzionare. Questo non è del tutto scolpito nella pietra, quindi se questa opzione è completamente fuori base posso lavorare con VBA.
L'attuale componente aggiuntivo che ho integrato in JMP cattura tutti i grafici aperti e aggiunge quelli selezionati a una cartella. Quindi ho una cartella di tutte le trame che voglio inserire in PPT. Il prossimo passo che sto cercando è una forma di personalizzazione. All'interno dell'aggiunta jmp desidero richiedere all'utente le proprietà della diapositiva, incluso il numero di grafici per diapositiva, il titolo della diapositiva, il testo aggiuntivo e le posizioni delle diapositive/testo.
La mia idea attuale è di richiedere tutto questo in JMP, acquisire tutte le proprietà della diapositiva e quindi passarle in una macro VBA in modo che possa eseguire le particolari proprietà della diapositiva.
È possibile passare i parametri da JMP alla macro? Forse salva i parametri della diapositiva in un file di testo di qualche tipo
Hai davvero una buona ragione per non voler eseguire da PowerPoint?
Il mio suggerimento sarebbe quello di scrivere la tua applicazione JMP, fargli eseguire l'analisi e generare i grafici desiderati e salvarli come immagini, in modo completamente indipendente dalla presentazione che stai cercando di creare. Quindi, scrivi una macro in PowerPoint che prima richiama lo script JMP per l'esecuzione, quindi acquisisce le immagini create dalla cartella specificata.
Dico questo perché la formattazione in PowerPoint è un gioco da ragazzi in VBA (praticamente l'unica cosa che È facile in VBA), perché ha molti metodi integrati e molti esempi online su come usarli.
la subroutine per chiamare JMP da Powerpoint sarebbe simile a questa:
Sottotitolo pubblico RunJSL()
Imposta MyJMP = CreateObject("JMP.Application")
MyJMP.Visible = Vero
MyJMP.RunJSLFile ("C:\<script>.jsl&amp;amp;amp;amp;quot;)&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;Fine sott&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;quindi scrivi un&amp;amp;amp;amp;#39;altra subroutine VBA che chiama RunJSL, quindi cerca in una cartella specificata, aggiungendo una diapositiva per ogni immagine in quella cartella, con cui puoi fare quello che vuoi, ad esempio:&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;Sottotitolo pubblico MakePics()&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Dim oSlide come diapositiva&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Immagine attenuata come forma&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Dim oTitolo come forma&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Dim ImgFldr come stringa: ImgFldr = &amp;amp;amp;amp;quot;$Documenti\Traccia immagini&amp;amp;amp;amp;quot;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Dim CurrentFile come stringa&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; io = 1&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Chiama RunJSL&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; FileCorrente = Dir(ImgFldr &amp;amp;amp;amp;amp; &amp;amp;amp;amp;quot;\&amp;amp;amp;amp;quot;)&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Esegui mentre FileCorrente &amp;amp;amp;lt;&amp;amp;amp;gt; &amp;amp;amp;amp;quot;&amp;amp;amp;amp;quot;&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Chiama AddSlides(CurrentFile)&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;//formatta la nuova diapositiva con una nuova immagine, la centra, la ridimensiona, aggiunge il titolo, qualunque cosa&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; ActiveWindow.View.GotoSlide i&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; FileCorrente = Dir()&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; io = io + 1&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Ciclo continuo&amp;amp;amp;lt;BR /&amp;amp;amp;gt;&amp;amp;amp;lt;BR /&amp;amp;amp;gt; Fine sott&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;lt;/P&amp;amp;amp;gt;
&amp;amp;amp;lt;P&amp;amp;amp;gt;EDIT: dovresti scrivere anche la subroutine AddSlides&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;/lingo-body&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-sub id="lingo-sub-5161" slang="en-US"&amp;amp;amp;gt;Ri: Scegli il tuo cervello...Script da esportare in PowerPoint&amp;amp;amp;lt;/lingo-sub&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-body id="lingo-body-5161" slang="en-US"&amp;amp;amp;gt;&amp;amp;amp;lt;HTML&amp;amp;amp;gt;&amp;amp;amp;lt;HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;/HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;BODY&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;Se stai utilizzando lo script VB, presumo che tu abbia già esaminato il supporto dell&amp;amp;amp;amp;#39;automazione OLE all&amp;amp;amp;amp;#39;interno di JMP.Non l&amp;amp;amp;amp;#39;ho provato, ma potresti prendere in considerazione l&amp;amp;amp;amp;#39;utilizzo di XML come meccanismo di interfaccia: dai un&amp;amp;amp;amp;#39;occhiata&amp;amp;amp;lt;SPAN style="color: #333333; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; text-align: -webkit-auto; background-color: #ffffff;"&amp;amp;amp;gt; Apri l&amp;amp;amp;amp;#39;SDK XML.&amp;amp;amp;lt;/SPAN&amp;amp;amp;gt;&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;Dave&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;/BODY&amp;amp;amp;gt;&amp;amp;amp;lt;/HTML&amp;amp;amp;gt;&amp;amp;amp;lt;/lingo-body&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-sub id="lingo-sub-5160" slang="en-US"&amp;amp;amp;gt;Ri: Scegli il tuo cervello...Script da esportare in PowerPoint&amp;amp;amp;lt;/lingo-sub&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-body id="lingo-body-5160" slang="en-US"&amp;amp;amp;gt;&amp;amp;amp;lt;HTML&amp;amp;amp;gt;&amp;amp;amp;lt;HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;/HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;BODY&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;Sì, ho esaminato la loro soluzione, ma ho già fatto sostanzialmente quello che hanno fatto loro. Ora sto cercando di espanderlo in modo da poter posizionare grafici/testo sulla diapositiva senza aprire PowerPoint.&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;Stavo anche cercando possibili altri percorsi o soluzioni a cui altri potrebbero pensare.&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;/BODY&amp;amp;amp;gt;&amp;amp;amp;lt;/HTML&amp;amp;amp;gt;&amp;amp;amp;lt;/lingo-body&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-sub id="lingo-sub-5159" slang="en-US"&amp;amp;amp;gt;Ri: Scegli il tuo cervello...Script da esportare in PowerPoint&amp;amp;amp;lt;/lingo-sub&amp;amp;amp;gt;&amp;amp;amp;lt;lingo-body id="lingo-body-5159" slang="en-US"&amp;amp;amp;gt;&amp;amp;amp;lt;HTML&amp;amp;amp;gt;&amp;amp;amp;lt;HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;/HEAD&amp;amp;amp;gt;&amp;amp;amp;lt;BODY&amp;amp;amp;gt;&amp;amp;amp;lt;P&amp;amp;amp;gt;Predictum ha un pacchetto gratuito che esporterà l&amp;amp;amp;amp;#39;output JMP in Powerpoint.&amp;amp;amp;lt;A class="active_link" href="http://predictum.com/" title="http://predictum.com/" rel="nofollow noopener noreferrer"&amp;amp;amp;gt;http://predictum.com/&amp;amp;amp;lt;/A&amp;amp;amp;gt;&amp;amp;amp;lt;/P&amp;amp;amp;gt;&amp;amp;amp;lt;/BODY&amp;amp;amp;gt;&amp;amp;amp;lt;/HTML&amp;amp;amp;gt;&amp;amp;amp;lt;/lingo-body&amp;amp;amp;gt;