Refreshing all Queries in Power Query

uk747

Well-known Member
Joined
Jul 20, 2011
Messages
843
Office Version
  1. 365
Platform
  1. Windows
Hi

I have one query from an external workbook and then I have several other queries that use the External Query

I'm trying to Refresh all Queries in VBA
1st Get the External Data and then from that Refresh All other Queries that are based on that one

Initially I tried Refresh ALL and then Reffresh2 option but neither worked. They refreshed the external query but didnt refresh all other queries in the workbook
VBA Code:
Sub Refresh1()
' Refreshed External Query but didn't Refresh other queries
ActiveWorkbook.RefreshAll

End Sub

VBA Code:
Sub Refresh2()
' Refreshed External Query but didnt Refresh other queries
Dim objConnection, bBackground

For Each objConnection In ThisWorkbook.Connections
  bBackground = objConnection.OLEDBConnection.BackgroundQuery

  objConnection.OLEDBConnection.BackgroundQuery = False
  
  objConnection.Refresh

  objConnection.OLEDBConnection.BackgroundQuery = bBackground

Next

End Sub
 

Excel Facts

Convert text numbers to real numbers
Select a column containing text numbers. Press Alt+D E F to quickly convert text to numbers. Faster than "Convert to Number"
Did you check connection properties
1707310673781.png
 
Upvote 0
Hi

Just checked main External Query and some of the ones that don't Refresh and settings are the same as in your screenshot
 
Upvote 0
Does anyone know the easiest way in VBA to make sure all Power Queries are refreshed including ones that reference them?

Thanks
 
Upvote 0
Did you try to disable the background refresh " uncheck the box on the connection" if you are using RefreshAll in your code ,
disabling the background refresh will cause Workbook.RefreshAll to complete its refresh before the rest of the VBA code does its job. with background refresh on the code will run away so you would have incorrect data in tables
 
Upvote 0
Uncheck "Enable background Refresh" for every query like suggested before.
Then ThisWorkbook.RefreshAll should work
 
Upvote 0
Did you try to disable the background refresh " uncheck the box on the connection" if you are using RefreshAll in your code ,
disabling the background refresh will cause Workbook.RefreshAll to complete its refresh before the rest of the VBA code does its job. with background refresh on the code will run away so you would have incorrect data in tables
It wasn't clear in your initial reply that's what I was supposed to do. You just highlighted those options
 
Upvote 0
Uncheck "Enable background Refresh" for every query like suggested before.
Then ThisWorkbook.RefreshAll should work

Hi shouldn't the code I posted originally Refresh2 have done that (Turn off Background Refresh, Then Refresh, then Turn it back on)

Or If I wanted to automate do I manually Uncheck Enable background refresh and leave it like that permanently and then just use vba below

mysub()
ActiveWorkbook.RefreshAll
End Sub
 
Upvote 0

Forum statistics

Threads
1,223,927
Messages
6,175,437
Members
452,641
Latest member
Arcaila

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top