2010-02-26 10 views
2

J'ai un certain nombre d'utilisateurs que je supporte qui demandent que les choses se passent automatiquement (bien plus automagiquement mais c'est un autre point!). On veut que les événements se produisent toutes les 120 secondes (voir mon autre question) et un autre veut que quelque chose se passe à 17 heures chaque jour ouvrable. Cela doit être sur la feuille Excel donc VBA comme addins etc sera un non non, car il doit être autonome.Excel VBA Application.OnTime. Je pense que c'est une mauvaise idée d'utiliser ça ... des pensées de toute façon?

J'ai une grande aversion d'utiliser Application.OnTime Je pense que c'est dangereux et peu fiable, qu'est-ce que tout le monde pense?


EDIT: Cross est à poste VBA Macro On Timer style to run code every set number of seconds, i.e. 120 seconds

Répondre

11

Application.OnTime est absolument fiable à 100% et est très certainement pas dangereux. Cependant, il est seulement exposé via VBA et vous êtes en ce qui concerne VBA comme un "non non" pour une raison quelconque ici, donc cette option semble être indisponible pour vous.

Je n'utiliserais généralement pas OnTime pour la planification à long terme, comme la planification d'Excel pour exécuter une commande chaque jour à 17 heures. Le problème est que si l'utilisateur ferme Excel, la planification OnTime est perdue. Ce dont vous auriez besoin, dans ce cas, est d'utiliser le Task Scheduler, ou créez votre propre application ou service Windows pour ouvrir Excel et exécuter vos commandes. Pour planifier un événement à se produire toutes les 120 secondes, cependant, l'utilisation de Application.OnTime serait parfaite pour cela - il vous suffirait de re-planifier OnTime pour qu'il se produise à nouveau en 120 secondes chaque fois que OnTime rappelle, car OnTime se déclenche uniquement une fois par planification, et non pas de manière répétée. Je voudrais absolument utiliser VBA pour cette tâche. Si vous ne voulez pas que VBA commence l'action, c'est bien: il suffit d'avoir le VBA contenu dans un classeur qui est ensuite ouvert par votre programme ou via le planificateur de tâches. À partir de ce moment, le code VBA peut se déclencher toutes les 120 secondes.

Avez-vous du sens?