在继续

时间:2018-04-27 14:39:08

标签: excel vba powerquery

我在ThisWorkbook中有这个。

Private Sub Workbook_Open()
    Workbooks(ThisWorkbook.Name).RefreshAll
End Sub

我的所有查询都在更新。

我想将查询收集的一些信息移到另一个位置。我使用各种范围。

Sub Move_data()
    Dim rng1, rng2, rng3 As Range
    Set rng1 = Worksheets("Sheet1").Range("A3:F103")
    rng1.Value = Worksheets("Sheet2").Range("A11:F111").Value

    'etc for rng2 and rng3... 
End Sub

问题是VBA开始更新查询,然后将“旧”数据移动到我的新位置。我想等到查询完成更新,然后自动移动数据。

我可以设置超时时间,但查询更新所需的时间非常多变(10秒到2分钟之间)。

此外,有没有办法加快查询更新。我试过这个:

Application.ScreenUpdating = False

但查询/表格/图表仍在闪烁/更新。我相信这是由于Power Query的属性,并假设我需要编写其他内容。

2 个答案:

答案 0 :(得分:3)

您应该能够更改查询的属性,以便查询不会“在后台刷新” - 这就是在查询完全运行之前导致宏继续的原因。

  • 转到功能区:[数据]
  • 点击[连接]
  • 选择您要影响的查询
  • 按[属性]
  • 取消[启用后台刷新]

现在,当您运行刷新宏时,执行将暂停,直到查询完成并且数据被拉入。

答案 1 :(得分:1)

假设您有一个从单元格A1开始的表。

此解决方案清除单元格A1的内容,并依靠刷新来重新填充它。

Do-While循环检查单元格A1中的内容并等待直到该单元格被填充。

为避免潜在的无限循环,在多次重复操作之后,使用计数器停止循环。

localhost:8000/example/