让Excel VBA等待PowerQuery数据刷新继续

问题描述 投票:-2回答:1

我的情况:我想通过PowerQuery提取一些数据表,希望自动刷新数据,保存并关闭。我有一个任务计划程序每天凌晨1点运行。问题在于Excel VBA在进入下一步(保存)之前不等待PowerQuery更新。

[有很多关于此的博客,我没有找到任何答案-但这使我找到了对我有用的东西!我不为代码感到骄傲,但是它在这里:

     Public Sub DataRefresh()

DisplayAlerts = False

For Each objConnection In ThisWorkbook.Connections
    'Get current background-refresh value
    bBackground = objConnection.OLEDBConnection.BackgroundQuery

    'Temporarily disable background-refresh
    objConnection.OLEDBConnection.BackgroundQuery = False

    'Refresh this connection
    objConnection.Refresh

    'Set background-refresh value back to original value
    objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next

Workbooks("DA List.xlsm").Model.Refresh
DoEvents

For i = 1 To 100000
Worksheets("DA List").Range("G1") = i
Next i
DoEvents

ActiveWorkbook.Save
Application.Quit

End Sub

[我认为这行得通,因为除了数据刷新之外,我还给excel做过一些事情,而且DoEvents和下一步之间的多余行似乎使VBA终于弄清了我的意图。

希望这会有所帮助!

excel vba wait
1个回答
1
投票
 Public Sub DataRefresh()

DisplayAlerts = False

For Each objConnection In ThisWorkbook.Connections
'Get current background-refresh value
bBackground = objConnection.OLEDBConnection.BackgroundQuery

'Temporarily disable background-refresh
objConnection.OLEDBConnection.BackgroundQuery = False

'Refresh this connection
objConnection.Refresh

'Set background-refresh value back to original value
objConnection.OLEDBConnection.BackgroundQuery = bBackground
Next

Workbooks("DA List.xlsm").Model.Refresh
DoEvents

For i = 1 To 100000
Worksheets("DA List").Range("G1") = i
Next i
DoEvents

ActiveWorkbook.Save
Application.Quit

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.