2010-10-21 4 views
1

J'ai un programme (GUI) qui s'interface avec Excel pour exécuter des macros. Nous utilisons Microsoft.Office.Interop.Excel pour appeler/exécuter les macros et cela fonctionne très bien. Ce que je ne peux pas comprendre est un bon moyen d'annuler les macros de l'interface graphique. Une idée que nous avions était d'utiliser la variable excel.application qui exécute les macros pour écrire une valeur "stop" à une cellule spécifique dans le classeur, et dans les macros (ils sont tous des boucles pour la plupart), vérifiez la "stop" valeur dans cette cellule.Quitter une macro Excel externe (à partir d'une interface graphique, pas de la macro)

Ce crashe mon GUI avec ce

The program '[2188] BVLReports.vshost.exe: Managed' has exited with code -336589910 (0xebf00baa).

et Excel obtient ligoté, et ne répondra pas. Je sais comment Exit Sub à partir de la macro si la valeur "stop" existe, donc je n'ai pas besoin de réponses sur la façon de vérifier/annuler à l'intérieur de la macro. Des idées sur une meilleure façon d'écrire cette valeur "stop" ou une meilleure façon d'annuler les macros en externe?

Merci

Répondre

0

Peut-être que vous pouvez utiliser la fonction SendKeys pour envoyer la sortie du clavier pour exceller et tuer de cette façon.

Espérons que cela aide.

Profitez-en!

1

Cela pourrait être un cas pour la fonction Excel Application.CheckAbort mystérieuse?

Application.CheckAbort

Selon Aide Application.Checkabort est censé arrêter recalcul sauf pour une plage spécifiée. Ça ne fait pas ça. Apparemment, il déclenche une erreur d'exécution s'il y a des messages d'abandon en attente dans la file d'attente des messages de l'application (clics de souris, touches de raccourci, etc.). Le paramètre spécifie s'il faut manger le message ou le laisser dans la file d'attente. L'objectif est de permettre à un calcul VBA de longue durée d'être interrompu de la même manière qu'un calcul Excel.

Application.CheckAbort ([KeepAbort])