Usando la automatización VBA<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Esta es una pregunta de automatización de VBA de seguimiento:
Necesito rellenar las tablas de datos jmp desde Excel, utilizando la automatización VBA.
Actualmente, estoy haciendo esto con "SetDataVector" y en bucle a través de cada elemento de las matrices de origen. Todos los intentos de usar el formulario vectorial "SetDataVector" no han tenido éxito.
Su ayuda para utilizar correctamente la función "SetDataVector" sería muy apreciada.
Gracias,
Pete
Re: Usando la automatización VBAMientras viajo por la ruta de automatización de VBA, es útil saber que hay una conversión implícita de tipos de datos en las comunicaciones entre Excel y JMP. ¡Gracias!
Re: Usando la automatización VBAGracias por el seguimiento.
Parece que 'SetDataVector' necesita que su matriz de origen sea de tipo doble o una cadena para que funcione. Si es una variante, el procedimiento se ejecutará pero no se transferirán contenidos a la tabla. La transferencia secuencial de los elementos de la matriz a una segunda matriz, mientras que los convierte al tipo doble (CDbl), funciona bien.
También se debe tener en cuenta que la matriz debe ser base0 para que funcione como se espera. Si es base1, desplaza los datos y pierde la primera fila / agrega una última fila no válida.
Gracias
Re: Usando la automatización VBALa mayoría de las variables utilizan el tipo de variante subyacente en VB / VBA. Creo que encontrará que el rendimiento es MUCHO más rápido si utiliza un bucle para rellenar una matriz en el lado VB y luego pasa esa matriz, en lugar de establecer valores de celda individualmente. El tiempo de comunicación entre procesos entre las llamadas de automatización causará una desaceleración dramática al usar el caso de celda individual.
En el ejemplo al que hice referencia, es cierto que creo las matrices como Double o String. Sin embargo, se pasan como matrices de variantes (la conversión es implícita). Si observa la firma del método para SetDataVector en el navegador de objetos, verá que JMP está esperando una matriz variante. Por lo tanto, al menos debe intentar pasar su matriz variante del rango de Excel a JMP. Si el tipo no se puede convertir implícitamente, entonces tendrá que copiar los elementos individualmente.
Brian Corcoran
Desarrollo JMP
Re: Usando la automatización VBASí, esto ayudó. Ahora puedo usar con éxito la función "SetDataVector" (siempre que la matriz sea de tipo 'Doble' o 'Cadena'). Desafortunadamente, para pasar datos entre una matriz y un rango de Excel, la matriz debe ser una 'Variante'. Como tal, 'SetCellVal' y en bucle a través de la matriz pueden ser la mejor opción en mi caso.
Gracias.
Re: Usando la automatización VBAEl programa de ejemplo de automatización de la tabla de datos que se incluye con la instalación de JMP tiene un ejemplo de la sintaxis. Si miras el código detrás del botón "Establecer vector", lo verás. Es demasiado largo para publicar todo aquí. El programa de muestra se encuentra en el directorio de instalación. Para JMP 11, esto sería C: \ Archivos de programa \ SAS \ JMP \ 11 \ Samples \ Automation \ Visual Basic Samples \ Data Table .NET.
Espero que eso ayude.
Brian Corcoran
Desarrollo JMP