Impossible d'exécuter le traitement par lots à partir d'Excel en tant que tâche planifiée

2

J'ai le Skript suivant qui a été précédemment exécuté manuellement:

set DIR="X:\SYSTEM\MAKROS"
X:
cd %DIR%
start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLA

Lorsque démarré manuellement, cela fonctionne très bien. Le BSYSTEM.XLAfait partie d'un système de gestion de projet basé sur Excel, je ne peux donc pas exporter le fichier dans un format de fichier différent.

Je dois maintenant exécuter ce script quotidiennement. Lors de la création d'une tâche planifiée pour exécuter ce .batfichier, il ne fonctionne tout simplement pas. La tâche se termine en quelques secondes (le script prend normalement environ 10 minutes) avec le dernier code de résultat d'exécution 0x1et l'historique de la tâche ne montre rien qui soit utile: entrez la description de l'image ici

J'ai déjà essayé de créer une tâche qui s'exécute directement, "C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE" /e-GENERATE_REPORTS BSYSTEM.XLAmais cette erreur se produit, cette information étant affichée dans l'historique:

Le planificateur de tâches n'a pas pu lancer l'action "C: \ Program Files (x86) \ Microsoft Office \ Office16 \ EXCEL.EXE" dans l'instance "{1fbeadd0-605b-4fe0-8d96-621281c53519}" de la tâche "\ Allgemein \ TMG Bericht". Données supplémentaires: Valeur d'erreur: 2147942667.

J'ai aussi essayé un script vbs comme celui-ci:

set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")
xlApp.Run "GENERATE_REPORTS"
xlBook.Close
xlApp.Quit

Mais de cette façon, j'obtiens l'erreur The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled, ce qui n'est pas vrai car cela fonctionne très bien, le script obove étant appelé manuellement. Le lecteur réseau à partir duquel le fichier est stratifié est défini comme "emplacement approuvé".

Etrangement quand j'ouvre, BSYSTEM.XLAje ne vois aucune feuille, mais juste un fichier Excel avec la plupart des éléments grisés, sauf le bouton makro. Lorsque j'essaie de jeter un coup d'œil aux macros, je n'en vois aucun. C’est pourquoi j’ai du mal à comprendre ce que fait start /wait EXCEL.EXE /e-GENERATE_REPORTS BSYSTEM.XLAmême ..

Je n'ai trouvé aucun élément utile concernant les commutateurs de ligne de commande Excel, à l'exception de ces deux documents:

Que puis-je faire pour fournir une alternative scriptable au script btach ci-dessus afin que je puisse exécuter cette commande en tant que tâche planifiée, ou que puis-je faire pour réparer le vbs?

farosch
la source

Réponses:

2

Votre script VBA échoue car xlBook n'est pas le bon objet pour prendre en charge la méthode Run.

Essayer

xlApp.Run "GENERATE_REPORTS"

Alternatives à ci-dessus

  • Si votre macro est dans un module xlApp.Run "BSYSTEM.xls!GENERATE_REPORTS" , notez le format de 'classeur'! Macro

  • Si votre macro est dans une feuille 'xlApp.Run "'BSYSTEM.xls'!sheet1.GENERATE_REPORT"

Extensions de fichier

Le fichier .xla est un format de fichier complémentaire Excel, vous pouvez essayer de l'enregistrer sous un fichier .xlam, un format de xla activé pour les macros.

Répartition du code

set xlApp = CreateObject("Excel.Application")' Crée le processus d' application Excel .

xlApp.Visible = True'Permet à l' application d'être visualisée / modifiée .

set xlBook = xlApp.Workbooks.Open("X:\SYSTEM\MAKROS\BSYSTEM.XLA")' Ouvre un classeur spécifié dans l'application Excel qui vient d'être ouverte.

xlApp.Run "GENERATE_REPORTS"' Exécute la macro-commande GENERATE_REPORTS.

xlBook.Close 'Ferme le classeur.

xlApp.Quit 'Termine le processus de demande Excel.

Angelofdev
la source
Cela me fait avancer un peu plus loin: l'erreur que je reçois maintenant est la suivante:The macro can not be executed. The 'GENERATE_REPORTS' macro may not be available in this workgroup, or all macros have been disabled.
farosch
@farosch Relisez stackoverflow.com/questions/18389562/… pour obtenir de l'aide pour la suite de plusieurs solutions à cette erreur.
Pimp Juice IT
@farosch est votre macro dans un module ou dans une des feuilles ? Cela vaut également la peine de vérifier le lien suivant pour savoir comment activer les macros dans les fichiers Office .
angelofdev
@PimpJuiceIT Tous les paramètres du centre de confiance sont définis. Lorsqu’il est appelé manuellement via le script batch, cela fonctionne. Ce problème ne peut donc pas poser problème. J'ai aussi ajouté cette information à ma question
farosch le
@angelofdev Je ne vois aucune feuille lors de l'ouverture du BSYSTEM.XLAfichier, mais un fichier Excel avec tous les éléments grisés. La macro de sélection ne montre aucune macro non plus. J'ai également ajouté cette information à la question initiale
farosch
0

Dans la mesure où cette commande nécessite l'affichage d'une interface utilisateur, la tâche ne peut pas être exécutée en arrière-plan, ce qui est automatiquement le cas lorsque Run whether user is logged on or notsélectionné dans les propriétés de la tâche. Après avoir défini cette option, tout a fonctionné comme prévu:

entrez la description de l'image ici

Pour que la tâche puisse être exécutée après un redémarrage du serveur, j'ai activé la connexion automatique avec cet outil .

farosch
la source