2016-12-29 1 views
0

J'ai un classeur Excel avec une macro Workbook_Open qui ouvre d'autres classeurs et actualise les connexions créées dans Power Request et Power Pivot. Ce classeur est ouvert par le planificateur de tâches tous les jours à 7h30. Le problème est que lorsque le sheduler de tâches ouvre le classeur, il exécute la macro avant que Power Query et Power Pivot puissent se charger correctement et dans certains cas, l'actualisation de connexion génère une erreur indiquant "Microsoft.Mashup.Oledb.1 non enregistré".Planificateur de tâches Excel VBA Power Query Open

Lorsque j'ouvre le classeur manuellement, tout fonctionne correctement. Et quand j'ouvre Excel avant que la tâche s'exécute, cela fonctionne aussi, parce que les addins sont déjà chargés.

Existe-t-il un moyen que je peux dire à Excel pour charger Power Query et Power Pivot d'abord, puis exécuter le reste du code?

J'ai essayé aussi reaload tous addins d'abord:

For Each CurrAddin In Excel.Application.AddIns 
    If CurrAddin.Installed Then 
     CurrAddin.Installed = False 
     CurrAddin.Installed = True 
    End If 
Next CurrAddin 

Mais cela ne semble pas fonctionner ici.

Merci beaucoup pour vos idées.

Répondre

0

En vous basant sur votre description du problème, que se passe-t-il lorsque vous lancez Excel à partir de Task Scheduler avant d'ouvrir ce classeur dans Task Scheduler? grâce

0

Ajouter ce en haut de votre module:

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Puis, au début de la fonction Workbook_Open ajouter

Application.DoEvents 'optional 
Sleep(5000) ' or 10000 for 10 seconds 
Application.DoEvents 'optional