web-dev-qa-db-fra.com

Pourquoi Excel ne peut-il pas ouvrir un fichier lorsqu'il est exécuté à partir du planificateur de tâches?

J'ai écrit un script PowerShell qui ouvre un classeur Excel et exécute une macro. Lorsque j'exécute ce script à partir de la console PS, ou même à partir d'une ligne de commande à l'aide de script.ps1 de powershell.exe, cela fonctionne. Lorsque je configure une tâche à partir du planificateur de tâches Windows, une exception est générée à propos de ce fichier Excel, indiquant qu'il n'existe pas ou est déjà utilisé.

Le fichier existe à coup sûr, car le script est exécuté à partir de la ligne de commande et je suis certain qu'il n'est pas utilisé.

J'ai essayé de déplacer le fichier Excel vers une zone locale et non privilégiée, afin d'éviter les problèmes de privilèges d'administrateur/de réseau. La tâche est toujours exécutée avec les privilèges les plus élevés. Le chemin n'a pas d'espaces ni de caractères spéciaux.

Lorsque j'essaie d'accéder au fichier à l'aide d'un objet système de fichiers, il n'y a pas d'erreur, même lorsqu'il est exécuté à partir du planificateur. Par conséquent, il est spécifique à la méthode Excel.Application.Workbooks.Open ("..").

Que devrais-je considérer maintenant?

Merci d'avance

10
zrz

C'est probablement un problème d'autorisations DCOM. Automatiser Excel est parfois périlleux ...

La seule façon pour moi de résoudre des problèmes tels que celui-ci consiste à configurer Excel pour qu'il s'exécute en tant qu'utilisateur spécifique via des autorisations DCOM.

  1. Ouvrir les services de composants (Démarrer -> Exécuter, tapez dcomcnfg)
  2. Accédez à Services de composants -> Ordinateurs -> Poste de travail et cliquez sur Configuration DCOM.
  3. Cliquez avec le bouton droit sur Microsoft Excel Application et choisissez Propriétés.
  4. Dans l'onglet Identité, sélectionnez Cet utilisateur, entrez l'ID et le mot de passe d'un compte d'utilisateur interactif (domaine ou local), puis cliquez sur OK.

Le conserver en tant qu'utilisateur interactif ou lors du lancement ne fonctionne malheureusement pas avec le planificateur de tâches, même lorsque vous configurez la tâche pour qu'elle s'exécute sous un compte disposant d'un accès administrateur à la machine.

8
squillman

Créez ces deux dossiers:

32 bits:

C:\Windows\System32\config\systemprofile\Desktop  

64 bits:

C:\Windows\SysWOW64\config\systemprofile\Desktop

Excel a besoin de ces dossiers s'il n'est pas exécuté de manière interactive. Créez les deux dossiers même si vous utilisez un système d'exploitation 64 bits.

34
eric

Lors de la définition des autorisations DCOM, si Microsoft Excel n'apparaît pas dans dcomcnfg essayez mmc comexp.msc /32

référence

2
cmo