2017-05-30 1 views
0

Le problème est que j'ai créé un script qui ouvre et actualise les données dans mon Excel. Les données sont des données externes d'un serveur PHD Je reçois ces données avec un plugin installé sur Excel. Tout fonctionne bien jusqu'à ce que j'essaie de planifier le script avec le planificateur de tâches. lorsque je le programme comme "exécuter uniquement lorsque l'utilisateur est connecté" cela fonctionne très bien. mais quand j'essaye de le programmer comme "courant où l'utilisateur est connecté ou pas" il ne met pas à jour les données. (il ouvre l'excel et l'enregistre mais aucun changement dans les données)Les données externes ne se chargent pas dans Excel lorsqu'elles sont planifiées à partir d'une tâche planifiée

Il est défini sur une VM qui agit comme un bureau et les mises à jour doivent être effectuées même lorsque je suis connecté.

Le code du script: (qui fonctionne très bien quand je manualy le lancer)

Dim oExcel 
Set oExcel = CreateObject("Excel.Application") 'launch excel. 
oExcel.Visible = True ' makes the aplication visible (if not set to true the data won't be updated) 
oExcel.DisplayAlerts = False' disables all excel allerts. 
oExcel.AskToUpdateLinks = False 'now excel will not ask you to update links. 
oExcel.AlertBeforeOverwriting = False 'excel will not display an alert before overwriting data in a cell. 
Code

pour le plug-in pour mettre à jour les données pour enregistrer et fermer

Dim addIn 
addIn = COMAddIn 
Dim automationObject 
automationObject = Object 
Set addIn = oExcel.COMAddIns("ExcelCompanion") 
Set automationObject = addIn.Object 
automationObject.UNIF_workbook_refresh 
Code

excel

oWorkbook.RefreshAll 'refreshes the workbook 
oWorkbook.Save 'saves the updated workoob 
oWorkbook.Final = True 'makes the file read-only 
oExcel.Quit 'exits excel 
Set oWorkbook = Nothing ' destroy the object (minimises damage if the object goes out of scope) 
Set oExcel = Nothing ' destroy the object (minimises damage if the object goes out of scope) 

ces 3 blocs de code forment le script.

Répondre

0

Hencky!

Quelle version de Windows avez-vous? J'ai eu le même problème il ya environ une semaine, et je suis tombé sur une solution très étrange ... :)

Essayez d'ajouter un dossier dans C: \ Windows \ SysWOW64 \ config \ systemprofile, simplement nommé "Desktop". Si vous exécutez une version 32 bits de Windows, faites la même chose, sauf que le chemin d'accès doit contenir system32 au lieu de SysWOW64 ... "Exécuter plus ou moins connecté" fera maintenant l'affaire ... Si vous avait une fonction de journalisation dans votre script, vous auriez vu que le script s'arrête quelque part autour des commandes Excel ... Je ne sais pas pourquoi est-ce, c'est tout simplement ...