通过VBA自动更新Power Query连接

我在myexcel.xlsx中设置了一个Power Query。 我将其连接的属性设置为这个和这个 。

我写了如下的VBA代码

Sub UpdateData() Dim filename As String Dim wbResults As Workbook filename = "C:\myexcel.xlsx" Set wbResults = Workbooks.Open(filename) ActiveWorkbook.RefreshAll wbResults.Close savechanges:=True End Sub 

当我手动打开myexcel.xslx时,Power Query连接会更新。 但通过VBA代码它不。 我应该添加我testing这与一个老式的Excel连接,并通过VBA代码工作正常。 但问题是Power Query连接。 有什么想法吗?

实际上,如果您查看现有的连接,实际上很容易,您可以看到电源查询连接名称是如何启动的,从“Query – ”开始,然后是“我的项目,我已经写了这个代码工作:

 Sub RefreshQuery() Dim con As WorkbookConnection Dim Cname As String For Each con In ActiveWorkbook.Connections If Left(con.name, 8) = "Query - " Then Cname = con.name With ActiveWorkbook.Connections(Cname).OLEDBConnection .BackgroundQuery = False 'or true, up to you .Refresh End With End If Next End Sub 

这将刷新所有的权力查询,但在代码中,你可以看到它说:

 If Left(con.name, 8) = "Query - " Then 

这只是意味着如果连接的名称,从左边开始并向右移动(前8个字符)的第一个EIGHT字符等于string“Query – ”,那么…

  • 并且如果知道查询的名称,请将8调整为表示查询名称中字符数量的数字,然后使语句等于查询连接名称,而不是所有电源查询连接的开始( “查询 – ”)…

我build议不要一次更新所有的电源查询,如果你有大量的。 您的电脑可能会崩溃,并且您的Excel可能没有自动保存。

快乐编码:)

由于您正在使用与Power Pivot不同的Power Query,因此您有两种select:

  1. 自动当文件打开时更新数据源 – ( http://www.excel2013.info/power-query/automatic-update/
  2. 编写一个VBA脚本来更新它

    For Each cn In ThisWorkbook.Connections If cn = "Power Query – Employee" Then cn.Refresh Next cn End Sub

从这里复制: https : //devinknightsql.com/category/power-query/