¿El gráfico no se inicia bajo el control de vba, cómo solucionarlo por favor?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Automatizacion VBA. Observo que los gráficos no se inician hasta que el script haya finalizado. Necesito verlos mientras se ejecuta el script, ¿hay alguna forma de solucionar esto, por favor?
Además, supongo relacionados. La macro crea varios gráficos. Pero aparentemente al azar algunos de ellos no se lanzan. Aparecen en la lista de ventanas en la ventana de inicio, pero no se muestran hasta que se inician manualmente. Supongo que estoy haciendo algo mal, pero no sé qué es.
Gracias por cualquier ayuda.
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Creo que esto es preferible. En cualquier momento que cree la instancia JMP en una subrutina y luego anule el puntero de la aplicación al salir, puede haber problemas con la automatización. El mejor enfoque es crear la instancia JMP y pasarla, asegurándose de que su vida útil persista durante toda su operación.
En su caso, la inicialización de las ventanas subyacentes es probablemente el problema. Parece que su nuevo enfoque les da más tiempo para crearse, de modo que cuando los hace visibles, la inicialización está completa y una salida rápida no dañará las cosas.
Brian
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Puede que haya encontrado el problema, tal vez podría comentar.
El código generaba un conjunto de gráficos, luego enviaba el conjunto de gráficos para lanzarlos y hacerlos visibles.
Esto resultó ser inestable y dependiente del tiempo. es decir, fallaría más a menudo con tablas de datos más grandes
Lazo
Generar gráficos (índice)
Siguiente
Lazo
Gráficas (Índice). Lanzamiento
Gráficos (Índice). Visible = Verdadero
Siguiente
Lo cambié para lanzar el gráfico en la generación y enviar el conjunto de gráficos para que se haga visible.
Hasta ahora, no he observado ningún comportamiento abominable.
Lazo
Generar gráficos (índice)
Gráficas (Índice). Lanzamiento
Siguiente
Lazo
Gráficos (Índice). Visible = Verdadero
Siguiente
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Esto puede ser difícil para mí replicar. Yo sugeriría probar un Sleep en la subrutina LaunchCharts real después de la llamada visible. Establecer las variables a Nada al final, aunque es una buena práctica, significa que se pueden cerrar.
Brian
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Puedo empeorarlo agregando más Sleep () 's. Esta configuración generalmente falla al iniciar el primer gráfico, pero todos los posteriores se ejecutarán.
Revisión de subgénero (filtro como variante, _
Grupo como variante, _
Iter1 como variante, _
Iter2 como variante, _
Iter3 como variante, _
Estadísticas como variante, _
Iterar como booleano)
Dim APPjmp, TBLjmp, DOCjmp
GetJMP APPjmp, TBLjmp, DOCjmp
Texto oscuro como cadena
Tenue éxito como booleano
Dim Stat, A, B, C, Índice, PlotIndex, RowFilter ()
Dim VChart () como JMP.Variability
Si itera entonces
Si es IsReal (Iter1), entonces ReDim VChart ((UBound (Iter1, 2) + 1))
Si IsReal (Iter2) ReDim VChart (UBound (VChart) * (UBound (Iter2, 2) + 1))
Más
ReDim VChart (1)
Terminara si
Índice = 0
Para A = 0 a UBound (Iter1, 2)
Para B = 0 a UBound (Iter2, 2)
Exito = Verdadero
Borrar RowFilter ()
AddFilters RowFilter, Filtro
ClearRowStates TBLjmp
Si IsValid (RowFilter) entonces Success = ExcludeGroup (RowFilter, TBLjmp)
DoEvents
Si itera entonces
Si es real (Iter1), entonces incluya Ítem Iter1 (0, A), Iter1 (1, A), TBLjmp
DoEvents
Si es real (Iter2), entonces incluya Ítem Iter2 (0,
, Iter2 (1,
, TBLjmp
DoEvents
Terminara si
Establecer VChart (Índice) = DOCjmp.CreateVariabilityChart
If Success Then GenerateVarCharts VChart (Índice), Estadísticas, Grupo
DoEvents
Índice = Índice + 1
Dormir 200
Siguiente
Siguiente
Dormir 500
Si el éxito entonces
LaunchCharts VChart
Más
DialogAndLive "No hay datos para trazar, ¿Se seleccionaron los elementos de filtro?"
Terminara si
DoEvents
ClearRowStates TBLjmp
Establecer APPjmp = Nada
Establecer TBLjmp = Nada
Set DOCjmp = Nada
End Sub
Sub LaunchCharts (VChart () como JMP.Variability)
Dim A
Para A = 0 a UBound (VChart) - 1
VChart (A). Lanzamiento
VChart (A) .Visible = True
Siguiente
End Sub
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Si utiliza el "Editor avanzado", en la parte inferior izquierda encontrará un icono Adjuntar. O puede simplemente pegar su código de VB para darme una idea de lo que está haciendo.
Brian
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Hola Brian,
Definitivamente aprecio tu ayuda. No encuentro ninguna provisión para adjuntar nada.
Re: chart no se inicia bajo el control de vba, ¿cómo solucionarlo, por favor?Hola Matt,
Me disculpo por extrañar esto de alguna manera cuando lo publicaste. ¿Puede proporcionar el código fuente de VBA que está utilizando? En general, si realiza una llamada a la suspensión () en su código cuando hay problemas de tiempo, puede ayudar con cosas como dar tiempo al análisis para crear una ventana. El programa de ejemplo de automatización de análisis que se envía con JMP (c: \ archivos de programa \ sas \ jmp \ 13 \ Samples \ Automation \ Visual Basic Samples \ Analysis.NET) proporciona un ejemplo de cómo configurar la llamada de suspensión. Debe declarar que está llamando a una función del sistema operativo. Estoy usando 13 como ejemplo para la ruta, pero este código se envió en las últimas 5 versiones de JMP.
Espero que eso ayude,
Brian Corcoran
Desarrollo JMP