Sal*_*lim 6 excel vba data-connections powerquery
我在myexcel.xlsx中设置了Power Query.我将其连接的属性设置为 this和this.
我写了一个如下的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
Run Code Online (Sandbox Code Playgroud)
当我手动打开myexcel.xslx时,Power Query连接会更新.但是通过VBA代码却没有.我应该添加我使用旧式Excel连接测试它,并通过VBA代码正常工作.但问题出在Power Query连接上.有什么想法吗?
Jam*_*fer 10
这实际上相当简单,如果你查看你现有的连接,你可以看到电源查询连接名称是如何开始的,它们都是从"查询 - "开始,然后是名字......所以它们都是相同的.我的项目,我写了这个代码有效:
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
Run Code Online (Sandbox Code Playgroud)
这将刷新您的所有电源查询,但在代码中您可以看到它:
If Left(con.name, 8) = "Query - " Then
Run Code Online (Sandbox Code Playgroud)
这只是意味着如果连接的名称,从LEFT开始并向右移动的前EIGHT字符(前8个字符)等于字符串"Query - "则...
如果您有大量的查询,我建议不要立即更新所有电源查询.您的计算机可能会崩溃,并且您的Excel可能没有自动保存.
快乐编码:)
小智 7
如果通过循环刷新所有连接,则无法控制发生这种情况的顺序。如果您需要控制顺序,或者只需刷新几个 Power Queries,这也是一个选项:
第一个函数刷新一个 Power Query。括号中的函数参数是在 Excel 的“查询和连接”窗格中可见的查询名称。请注意如何通过添加“Query - ”作为前缀将其转换为连接名称。
然后,第二个函数使用第一个函数以特定顺序调用特定的 Power Queries,从而为您提供完全控制权。
Public Sub RefreshSpecificPowerQuery(pqName As String)
Dim con As WorkbookConnection
Dim conName As String
conName = "Query - " & pqName
With ActiveWorkbook.Connections(conName).OLEDBConnection
.BackgroundQuery = False 'or TRUE, as the case requires
.Refresh
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
Public Sub RefreshListOfPowerQueries()
Call RefreshSpecificPowerQuery("pqMyFirstPowerQueryName")
Call RefreshSpecificPowerQuery("pqMySecondPowerQueryName")
End Sub
Run Code Online (Sandbox Code Playgroud)
由于您使用的是与 Power Pivot 不同的 Power Query,因此您有两个选择:
\n\n编写一个 VBA 脚本来更新它
\n\n\nFor Each cn In ThisWorkbook.Connections \n If cn = "Power Query \xe2\x80\x93 Employee" Then cn.Refresh \n Next cn \nEnd Sub\n
从这里复制:\n https://devinknightsql.com/category/power-query/
\n