2010-10-22 13 views
4

Je voudrais avoir une macro, appelée Macro1, par exemple, exécutée tous les jours à 9h00. Il fonctionne très bien seul à partir de l'éditeur de code VB dans Access 2007 mais je voudrais qu'il soit capable de s'exécuter automatiquement sans que l'accès soit ouvert.Comment programmer une macro pour qu'elle s'exécute automatiquement dans Access 2007

S'il vous plaît noter que je ne veux pas qu'il y ait une intervention humaine, il doit être capable de fonctionner automatiquement sans que quelqu'un ouvre Access pour déclencher autoexec ou onload ou quelque chose de similaire.

Est-ce possible?

+0

celui-ci est étrange ... vous voulez exécuter une macro Access sans exécuter Access! Tu ne peux pas faire le même tour dans une autre langue? –

+0

@Philippe: Fondamentalement, j'ai besoin de tirer des données d'une autre base de données sur un calendrier. Les données sont entrées dans une autre base de données gérée par un logiciel merdique que je ne suis pas autorisé à toucher. J'ai besoin d'avoir des informations saisies tous les jours et je veux pouvoir le faire sans avoir besoin d'avoir un accès ouvert et de cliquer sur quelque chose chaque jour. Pas nécessairement l'exécuter sans exécuter l'accès, mais à la place ouvrir l'accès et exécuter cette macro puis quitter si cela a plus de sens. – alexcoco

+1

Si vous exécutez simplement des requêtes, vous pouvez le faire avec DAO via vbScript. Pour la macro, voir ma réponse. –

Répondre

6

Vous pouvez utiliser un commutateur de ligne de commande MS Access pour exécuter une macro. Si vous recherchez "commandline" dans l'aide d'Access, la rubrique "Options de ligne de commande de démarrage" vous donne tous les commutateurs de ligne de commande. Le commutateur pour exécuter une macro est x macro. Donc, si vous écrivez votre macro pour exécuter ce que vous voulez et que vous quittez Access quand il se termine, vous pouvez ensuite créer une ligne de commande qui fera l'affaire et la mettre dans un fichier séquentiel que le planificateur de tâches Windows peut exécuter . Cependant, comme je l'ai dit dans un commentaire ci-dessus, si vous exécutez simplement des requêtes, je dirais qu'il est plus judicieux de contourner Access entièrement et d'utiliser DAO directement dans un vbScript planifié pour exécuter les requêtes.

+0

Cela semble bien. Ce ne sont pas seulement des questions, bien que cela en fasse partie. Je dois interroger une table liée à partir d'une autre base de données et mettre à jour le contenu dans la base de données en cours. – alexcoco

+0

Oh, et merci pour la réponse approfondie, je l'apprécie! – alexcoco

+1

Je ne sais pas quelles sont les différences entre l'exécution de certaines requêtes et «l'interrogation d'une table liée ... et la mise à jour du contenu dans la base de données en cours» - n'est-ce pas fait en exécutant une requête? Si ce n'est pas le cas, peut-être que ça devrait l'être? –

4

Vous pouvez utiliser Windows Task Scheduler et VBScript pour exécuter du code ou démarrer Access.

+0

Donc, je planifierais un script pour s'exécuter tous les jours à un certain moment et ensuite avoir ce script ouvrir l'accès et exécuter une macro? Est-ce faisable? – alexcoco

+0

... en supposant, bien sûr, que ce que la macro fait finalement est quelque chose qui peut être fait par l'intermédiaire de DAO ou via l'automatisation d'accès. –

2

Vous devez créer vbscript pour exécuter votre macro et créer un fichier de commandes pour planifier votre vbscript.

  • code vbscript, enregistrez ce fichier comme schedule.vbs

    Dim accessApp
    set accessApp = CreateObject ("Access.Application") accessApp.OpenCurrentDataBase ("fullpath \ msaccessdb")

    accessApp.Run "Macroname", param1, param2, param3
    accessApp.Quit
    set accessApp = rien

  • puis créez fichier.bat

    @echo off
    schedule.vbs cscript

et votre prêt à planifier à l'aide du planificateur de tâches de Windows http://www.thewindowsclub.com/how-to-schedule-batch-file-run-automatically-windows-7

espoir cette aide: D

+0

Vous avez presque 3 ans de retard et ce projet n'est plus pertinent pour moi. Il y a déjà une réponse acceptée. Peut-être que votre réponse aidera encore quelqu'un d'autre. Merci d'avoir posté. – alexcoco

+2

@noodle, quel est le point du fichier vbscript? Pourquoi ne pas simplement lancer la macro directement? – PowerUser