L'exécution de macro VBA dans Access 2010 externes VBScript
Pas sûr que c'est possible, mais il semble que cela devrait être faisable.... c'est en 2013, après tout! Et certains posts sur le forum, j'ai trouvé suggèrent qu'il est, mais je n'ai pas réussi à la faire fonctionner...
J'ai une db Access 2010 avec une macro qui télécharge des fichiers à partir de 3 différents sites web et procède ensuite à importer les données et les traiter. Il fonctionne pendant 1 heure et 17 minutes.
Je veux programmer cette macro à exécuter à 4h du matin, donc il est tout fait et dépoussiéré par l'heure du café et du début du travail de 8h... j'ai Donc créé un script VBScript pour exécuter cette, qui seront ensuite placées dans le Planificateur de Tâches pour la durée souhaitée.
C'est un seul utilisateur DB, mon utilisation uniquement sur mon PC.
J'ai fait quelques recherches mais je n'arrive pas à obtenir ce travail. Voici ce que j'ai à ce jour:
Macro à l'intérieur de "Principal" module dans Access 2010, à l'intérieur de "Modèle de Tarification.accdb":
Public Sub Download_And_Import()
ProcStep = ""
ExecStep = 1
DoCmd.SetWarnings False
'Empty the Execution Progress table
DoCmd.RunSQL "DELETE * FROM EXECUTION_PROGRESS"
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Download_Files Main Procedure...")
Call Download_Files.Download_Files
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Download_Files Main Procedure...")
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Starting Import_Files Main Procedure...")
Call Import_Files.Import_Files
Call Update_EXECUTION_PROGRESS(Format(Now(), "YYYY/MM/DD HH:MM:SS"), ExecStep, "Finished Import_Files Main Procedure, closing application now...")
DoCmd.SetWarnings True
End Sub
Ensuite, j'ai créé le VBScript suivant à exécuter Access VBA Macro externe:
dim accessApp
set accessApp = createObject("Access.Application")
accessApp.OpenCurrentDataBase("G:\Pricing DB\Pricing Model.accdb")
accessApp.Run "Download_And_Import"
accessApp.Quit
set accessApp = nothing
Je reçois le message "appel de fonction non valide, la Ligne 4", qui est l'étape:
accessApp.Run "Download_And_Import"
Toutes les idées /de l'aide est très appréciée! Merci à l'avance!
M
ProcStep
et ProcExec
. Faire l'application visible (accessApp.Visible = True
), de sorte que vous pouvez utiliser l'éditeur de macro pour le débogage.Je ne suis pas en mesure de tester ce droit maintenant, mais essayez d'ajouter des parenthèses:
accessApp.Run ("Download_And_Import")
.Salut Ansgar Wiechers, je suis désolé mais je suis nouveau sur VBS (bien que j'ai un peu de VBA expérience). Votre suggestion, quand j'ai ajouter la ligne (accessApp.Visible = True) l'Accès s'ouvre quand je lance le SCRIPT mais j'ai toujours un Appel de Fonction non valide msg. Je ne suis pas sûr de ce que vous êtes en se référant à la définition ProcStep et ProcExec, pouvez-vous élaborer pls. Merci pour l'aide.
Salut UberNubIsTrue, j'ai essayé ta suggestion et je reçois un "Appel de Fonction non valide" message sur la ligne 4 (la Macro à exécuter). Merci!
La seule suggestion que je pourrais jeter là pour s'assurer que votre Sous n'est pas le même nom que le module dans lequel il réside. Cela a jeté les erreurs pour moi dans le passé lors de l'utilisation de
application.run
.OriginalL'auteur TheRealPapa | 2013-07-14
Vous devez vous connecter pour publier un commentaire.
Je ne vois rien de mal avec le VBScript lui-même. J'ai copié ton code, modifié par la db de nom de fichier et nom de la procédure, et il s'est exécuté sans erreur. Si ma conjecture est que le VBScript erreur "bulles" de l'Accès lorsqu'il tente d'exécuter la procédure.
Ouvrir
Pricing Model.accdb
dans l'Accès, aller à la fenêtre exécution (Ctrl+g), tapez la ligne suivante et appuyez sur EntréeSi cela déclenche une erreur vous avez sûrement un problème dans cette procédure. Si il ne jette pas une erreur, vous pourriez quand même avoir des difficultés à exécuter, à partir d'une tâche planifiée, si la procédure exige des autorisations de Windows et vous n'avez pas réglé l'exécution de la tâche dans votre compte d'utilisateur.
Si vous avez besoin pour résoudre les problèmes de la procédure, tout d'abord ajouter
Option Explicit
à la section Déclarations du module. Puis exécuter le Débogage->Compiler à partir de l'Éditeur de VB du menu principal. Fixer quoi que ce soit le compilateur se plaint. Répétez jusqu'à ce que le code compile sans erreur.Désactiver
DoCmd.SetWarnings False
pendant la résolution des problèmes parce qu'il supprime de l'information. Examiner si la substitution de la DAODatabase.Execute
méthode pourDoCmd.RunSQL
vous permettra d'éviter de tournerSetWarnings
dans l'ensemble.Essayez d'exécuter le script à partir d'une fenêtre de commande à l'aide de
cscript YourScriptName.vbs
je ne suis pas convaincu que va nous donner une meilleure information, mais je n'ai rien d'autre à proposer.OriginalL'auteur HansUp
Vous pouvez essayer, y compris la ProjectName:
Le projet-nom par défaut est le nom de base de données, et le carré-les parenthèses sont nécessaires en raison de l'espace.
Cela ne devrait pas être nécessaire, parce que votre Sous est Public, mais vaut la peine d'essayer.
Ce n'Update_EXECUTION_PROGRESS faire et où est-il stocké?
Salut Andy G, Update_EXECUTION_PROGRESS est essentiellement une procédure pour mettre à jour une table dans la même DB où je stocke les messages de progression. Merci.
Il tourne la suppression de la requête au moins? Je voudrais essayer de commenter certains des autres appels de procédure. Débogage: briser à isoler le problème ;). L'appel de fonction non valide peut se référer à l'un de ces lignes, lors de l'exécution à l'extérieur à partir d'un script.
Salut Andy G, merci pour la suggestion, mais le VBA morceau de fin pour mettre fin à la perfection. J'ai l'exécuter manuellement plusieurs fois maintenant et se termine sur OK. "Appel de fonction non valide" msg-je obtenir des points pour le VBScript ligne 4 où j'essaie de l'exécuter le VBA à l'intérieur de l'Accès DB (accessApp.Exécuter "Download_And_Import"). J'ai même essayé de commenter toutes les entrées dans mon Accès principal VBA (Download_And_Import) et seulement une instruction MSGBOX pour voir si le script VBScript qui la déclenche, même illégale appel de fonction msg revient, pointant vers la ligne 4 en VBS.
OriginalL'auteur Andy G
J'ai couru dans la même (msg) question le script était OK! Le problème, c'est de tester le script avec la base de données ouverte comme je l'ai été en mode de développement, dès que j'ai fermé la Base de données le script a bien fonctionné.Fermez la base de données avant de tester le script.
OriginalL'auteur Marcos J.D Junior