Exécutez excel VBA uniquement si le programmeur de tâches Windows a ouvert le file

Maîsortingse,

J'ai peu de table excel, qui a été mise à jour quotidiennement par les users. Il contient une colonne de date.

J'ai mis un petit extrait VBA qui envoie une alerte par courrier électronique lorsque la colonne de la date contient une date qui est égale à la date actuelle et que la fermeture du file.

Ce excel appelle du planificateur de tâches.

Cela fonctionne bien, mais maintenant chaque fois qu'un user ouvre l'excel, le vba envoie un e-mail et ferme le file.

Est-il possible d'exécuter le VBA uniquement lorsque Excel est ouvert via le planificateur de tâches? (ou si le file est ouvert par un user spécifique (par exemple, l'administrateur).

Je vous remercie

Comme Dave l'a mentionné, vous pouvez utiliser une variable environnementale. Mais personnellement, je n'utiliserais pas le «nom d'user» ou toute autre approche de count. Si vous utilisez une variable d'environnement, je vous recommand d'utiliser quelque chose comme «planifié» ou autre chose et Excel cherche simplement à voir si la variable existe. Vous devez évidemment avoir quelque chose qui définit le drapeau de l'environnement en premier lieu lors de l'appel du planificateur de tâches. Ainsi, par exemple, si le planificateur invoque un file batch, vous définissez l'environnement dans le file batch avant d'exécuter la command Excel.exe.

Cependant, vous devriez également pouvoir passer un paramètre dans la command line Invokation of Excel, et dans le VBA lorsqu'il s'ouvre, regardez pour voir si le paramètre existe. Si je me souviens bien, vous pouvez invoquer quelque chose comme ceci:

"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" SomeBook.xlsm /e /SomeParameter/ 

Et dans le classur Open even, vous devez extraire le paramètre de la command line à l'aide d'une API. Je pense que c'est celui-ci:

 Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineW" () As Long 

J'espère que cela pourra aider.