Nous utilisons des objets COM pour accéder aux feuilles de calcul Excel dans un service NT (via l'hôte Windows Scripting). Avant Vista, cela fonctionnait à merveille, mais à partir de Vista, nous recevons cette erreur:L'accès au fichier à partir de l'objet COM Excel échoue lors de l'exécution du service NT sur Vista
Microsoft Office Excel ne peut pas accéder au fichier 'c: \ myfiles \ test.xls'. Il existe plusieurs raisons possibles:
- Le nom de fichier ou le chemin n'existe pas.
- Le fichier est utilisé par un autre programme.
- Le classeur que vous essayez d'enregistrer porte le même nom qu'un classeur actuellement ouvert.
J'ai essayé de modifier les paramètres d'ouverture de session du service NT pour utiliser mon propre compte, un compte administrateur et un système local. J'ai examiné la politique de sécurité locale et n'ai rien trouvé. J'ai passé des jours à chercher dans Microsoft KB en vain.
Si le script est exécuté à partir d'une application de console, cela fonctionne correctement. Le fichier s'ouvre et est traité sans problème. L'erreur se produit uniquement lorsqu'elle est exécutée dans le contexte d'un service. Si le service est exécuté sur Windows XP ou Server 2003 SP1, il fonctionne également correctement. Ce n'est que sur Vista qu'il échoue (et nous avons maintenant des rapports d'échec dans Server 2003 SP2)!
Le code, pour ce qu'il vaut la peine est extrêmement simple:
dim xl_app
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open mypath,0,1
Je soupçonne que cette personne pourrait être victime du même problème: http://bytes.com/forum/thread819740.html
Pouvez-vous ouvrir le fichier Excel dans le service avec l'API Win32 standard (c'est-à-dire CreateFile?) –
Dans quelle langue le service est-il écrit? Comment appelez-vous l'hôte de script? –