2016-12-29 5 views
0

У меня есть рабочая книга excel с макросом Workbook_Open, которая открывает другие книги и обновляет соединения, созданные в силовом запросе и силовом шарнире. Эта книга открывается Планировщиком задач каждый день в 7:30.Excel VBA Power Query Task Scheduler Open

Проблема заключается в том, что когда диспетчер задач открывает рабочую книгу, он запускает макрос, прежде чем Power Query и Power Pivot могут загружаться должным образом, а в некоторых случаях обновление соединения вызывает ошибку «Microsoft.Mashup.Oledb.1 незарегистрирован».

Когда я открываю книгу вручную, все работает отлично. И когда я открываю Excel перед запуском задачи, он также работает, потому что аддины уже загружены.

Есть ли способ, которым я могу сказать, что Excel может сначала загрузить Power Query и Power Pivot, а затем выполнить оставшуюся часть кода?

Я также попытался reaload всех надстроек первыми:

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

Но не кажется, что работать здесь.

Благодарим вас за любые идеи.

ответ

0

Основываясь на вашем описании проблемы, как насчет запуска Excel из планировщика заданий за некоторое время до открытия этой книги в планировщике заданий? благодаря

0

Добавьте это в верхней части модуля:

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

Затем, в начале функции Workbook_Open добавить

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