在Excel 2016上静默刷新电源查询

时间:2018-03-20 12:33:38

标签: excel vba excel-vba m

在Excel 2013中,我使用以下VBA sub来静默刷新使用power query加载的表:

Public Sub RefreshData()
    Sheet1.Range("my_data_table").ListObject.TableObject.Refresh
End Sub

迁移到Excel 2016后,相同的代码具有不同的行为,这意味着在加载数据后,它会将视图更改为新数据表。

有没有办法让旧行为恢复?

编辑: 我制作了一个更准确描述问题的模型,可以下载:here

1 个答案:

答案 0 :(得分:0)

可能您只能关闭屏幕更新并切换回原始工作表。

Public Sub RefreshData()
    Application.ScreenUpdating = False
    Sheet1.Range("my_data_table").ListObject.TableObject.Refresh
    DoEvents 'let refresh finish first
    Worksheets("SheetNameWhereRefershButtonIs").Activate 'switch back to a specific sheet
    Application.ScreenUpdating = True
End Sub

或@Chronocidal指出:

Public Sub RefreshData()
    Application.ScreenUpdating = False
    With ActiveSheet
        Sheet1.Range("my_data_table").ListObject.TableObject.Refresh
        DoEvents 'let refresh finish first
        .Activate 'switch back to original sheet
    End With
    Application.ScreenUpdating = True
End Sub