Utilizzo dell'automazione VBA<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Questa è una domanda di automazione VBA successiva:
Ho bisogno di popolare le tabelle di dati jmp da Excel, usando l'automazione VBA.
Attualmente, lo sto facendo con "SetDataVector" e scorrendo ogni elemento degli array di origine. Tutti i tentativi di utilizzare la forma vettoriale "SetDataVector" non hanno avuto successo.
Il tuo aiuto per utilizzare correttamente la funzione "SetDataVector" sarebbe molto apprezzato.
Grazie,
Pietro
Re: Utilizzo dell'automazione VBAMentre viaggio lungo il percorso di automazione VBA, è utile sapere che esiste una conversione implicita dei tipi di dati nelle comunicazioni tra Excel e JMP. Grazie!
Re: Utilizzo dell'automazione VBAGrazie per il seguito.
Sembra che "SetDataVector" abbia bisogno che la sua matrice di origine sia di tipo double o una stringa per funzionare. Se si tratta di una variante, la procedura verrà eseguita ma nessun contenuto verrà trasferito nella tabella. Il trasferimento sequenziale degli elementi dell'array in un secondo array, mentre li converte nel tipo double (CDbl), funziona bene.
Va inoltre notato che l'array deve essere base0 per funzionare come previsto. Se è base1, sposta i dati e perde la prima riga / aggiunge un'ultima riga non valida.
Grazie
Re: Utilizzo dell'automazione VBALa maggior parte delle variabili utilizza il tipo di variante sottostante in VB/VBA.Penso che troverai le prestazioni MOLTO più veloci se usi un ciclo per popolare un array sul lato VB e quindi passi quell'array, invece di impostare i valori delle celle individualmente.Il tempo di comunicazione tra i processi tra le chiamate di automazione causerà un notevole rallentamento quando si utilizza la singola custodia della cella.
Nell'esempio a cui ho fatto riferimento, è vero che creo gli array come Double o String.Tuttavia, vengono passati come array varianti (la conversione è implicita).Se guardi la firma del metodo per SetDataVector nel browser degli oggetti, vedrai che JMP si aspetta in effetti un array variante.Quindi, dovresti almeno provare a passare la tua matrice di varianti dall'intervallo di Excel a JMP.Se il tipo non può essere convertito in modo implicito, dovrai copiare gli elementi singolarmente.
Brian Corcoran
Sviluppo JMP
Re: Utilizzo dell'automazione VBASì, questo ha aiutato. Ora posso utilizzare con successo la funzione "SetDataVector" (a condizione che l'array sia di tipo "Double" o "String"). Sfortunatamente, per passare i dati tra una matrice e un intervallo di Excel, la matrice deve essere una "Variante". In quanto tale, "SetCellVal" e il ciclo dell'array potrebbero essere ancora l'opzione migliore nel mio caso.
Grazie.
Re: Utilizzo dell'automazione VBAIl programma di esempio di automazione Data Table incluso con l'installazione di JMP contiene un esempio della sintassi.Se guardi il codice dietro il pulsante "Imposta vettore", lo vedrai.È troppo lungo per pubblicare davvero tutto qui.Il programma di esempio si trova nella directory di installazione.Per JMP 11, questo sarebbe C:\Programmi\SAS\JMP\11\Samples\Automation\Visual Basic Samples\Data Table .NET .
Spero che aiuti.
Brian Corcoran
Sviluppo JMP