carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Automatisation VBA. Je remarque que les graphiques ne se lancent pas avant la fin du script. J'ai besoin de les voir pendant l'exécution du script. Existe-t-il un moyen de résoudre ce problème, s'il vous plaît?
Aussi, je suppose lié. La macro crée plusieurs graphiques. Mais apparemment au hasard, certains d'entre eux ne parviennent pas à se lancer. Ils apparaissent dans la liste Fenêtre de la fenêtre d'accueil, mais ne s'affichent pas avant d'être lancés manuellement. Je suppose que je fais quelque chose de mal, mais je ne sais pas ce que c'est.
Merci pour toute aide.
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Je pense que c'est préférable. Chaque fois que vous créez l'instance JMP dans un sous-programme et que vous annulez la suppression du pointeur d'application à la sortie, il peut y avoir des problèmes d'automatisation. La meilleure approche consiste généralement à créer et à transmettre l'instance JMP, en veillant à ce que sa durée de vie soit conservée pendant toute la durée de votre opération.
Dans votre cas, l’initialisation des fenêtres sous-jacentes est probablement le problème. Il semble que votre nouvelle approche leur donne plus de temps pour être créé. Ainsi, lorsque vous les rendez visibles, l'initialisation est terminée et une sortie rapide ne nuit pas aux choses.
Brian
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?J'ai peut-être trouvé le problème, vous pourriez peut-être commenter.
Le code générait un tableau de graphiques, puis envoyait le tableau de graphiques à lancer et à rendre visible.
Cela s'est avéré instable et dépendant du timing. c'est-à-dire qu'il échouerait plus souvent avec des tables de données plus grandes
Boucle
Générer des graphiques (index)
Suivant
Boucle
Graphiques (Index) .Lancement
Graphiques (Index) .Visable = True
Suivant
Je l'ai changé pour lancer le graphique à la génération et envoyer le tableau de graphiques à rendre visible.
Jusqu'à présent, je n'ai observé aucun comportement odieux
Boucle
Générer des graphiques (index)
Graphiques (Index) .Lancement
Suivant
Boucle
Graphiques (Index) .Visable = True
Suivant
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Cela peut être difficile pour moi de reproduire. Je suggérerais d'essayer un sommeil dans le sous-programme LaunchCharts après l'appel visible. Définir les variables sur Nothing à la fin, bien que bonne pratique, signifie qu’elles peuvent être fermées.
Brian
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Je peux aggraver la situation en ajoutant plus de Sleep (). Cette configuration ne parvient généralement pas à lancer le premier graphique, mais tous les suivants seront lancés.
Sub GenChartsReview (Filtrer en tant que variante, _
Group As Variant, _
Iter1 en tant que variante, _
Iter2 comme variante, _
Iter3 en tant que variante, _
Stats As Variant, _
Itérer comme Booléen)
Dim APPjmp, TBLjmp, DOCjmp
GetJMP APPjmp, TBLjmp, DOCjmp
Dim Text As String
Dim Success As Boolean
Dim Stat, A, B, C, Index, PlotIndex, RowFilter ()
Dim VChart () As JMP.Variability
Si Itérer alors
Si IsReal (Iter1), reDim VChart ((UBound (Iter1, 2) + 1))
Si IsReal (Iter2), reDim VChart (UBound (VChart) * (UBound (Iter2, 2) + 1))
Autre
ReDim VChart (1)
Fin si
Indice = 0
Pour A = 0 à UBound (Iter1, 2)
Pour B = 0 à UBound (Iter2, 2)
Succès = Vrai
Effacer RowFilter ()
AddFilters RowFilter, Filter
ClearRowStates TBLjmp
Si IsValid (RowFilter) Then Success = ExcludeGroup (RowFilter, TBLjmp)
Evènements
Si Itérer alors
Si IsReal (Iter1) puis IncludeItem Iter1 (0, A), Iter1 (1, A), TBLjmp
Evènements
Si IsReal (Iter2) puis IncludeItem Iter2 (0,
, Iter2 (1,
, TBLjmp
Evènements
Fin si
Définir VChart (Index) = DOCjmp.CreateVariabilityChart
En cas de succès, puis GenerateVarCharts VChart (Index), Stats, Group
Evènements
Index = Index + 1
Sommeil 200
Suivant
Suivant
Sommeil 500
Si le succès alors
LaunchCharts VChart
Autre
DialogAndLive "Aucune donnée à tracer, les éléments de filtre sont-ils sélectionnés?"
Fin si
Evènements
ClearRowStates TBLjmp
Set APPjmp = Nothing
Set TBLjmp = Nothing
Définir DOCjmp = Nothing
End Sub
Sub LaunchCharts (VChart () As JMP.Variability)
Dim A
Pour A = 0 à UBound (VChart) - 1
VChart (A) .Lancement
VChart (A) .Visible = True
Suivant
End Sub
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Si vous utilisez "l'éditeur avancé", vous trouverez en bas à gauche une icône d'attachement. Ou, vous pouvez simplement coller votre code VB pour me donner une idée de ce que vous faites.
Brian
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Salut Brian
J'apprécie vraiment votre aide. Je ne trouve aucune disposition pour attacher quoi que ce soit.
Re: la carte ne se lance pas sous le contrôle de vba, comment réparer s'il vous plaît?Salut Matt,
Je m'excuse de l'avoir oublié quand vous l'avez posté. Pouvez-vous fournir le code source VBA que vous utilisez? Généralement, si vous appelez sleep () dans votre code lorsqu'il y a des problèmes de synchronisation, il peut être utile, par exemple, de donner à l'analyse le temps de créer une fenêtre. L'exemple de programme d'automatisation d'analyse fourni avec JMP (fichiers c: \ programme \ sas \ jmp \ 13 \ Samples \ Automation \ Exemples Visual Basic \ Analysis.NET) fournit un exemple de configuration de l'appel en veille. Vous devez déclarer que vous appelez une fonction du système d'exploitation. J'utilise 13 comme exemple pour le chemin, mais ce code est fourni dans les 5 dernières versions de JMP.
J'espère que ça aide,
Brian Corcoran
Développement JMP