Refreshing external data on individual sheets in a specific sequen

  • Thread starter Thread starter Nayan
  • Start date Start date
N

Nayan

Hi All,

I have a workbook consisting of 10 worksheets. First three worksheets
contains Pivot Table, which gets the data from 4th, 5th and 6th worksheets.
4th, 5th and 6th worksheets gets the data (using a web query) from an
external CSV file. I want to have a "Refresh Data" on the fist sheet, which
is when clicked, refreshes the external data and the pivot tables in the
following sequence :-
Refresh the data on 4th Sheet.
Refresh the data on 5th Sheet.
Refresh the data on 6th Sheet.
Refresh the Pivot Tables on 1st sheet.
Refresh the Pivot Tables on 2nd sheet.
Refresh the Pivot Tables on 3rd sheet.

I used "ThisWorkbook.RefreshAll", but it refreshes the data in one go, not
in the required sequence. I also tried "Sheets(index).Calculate" for
different sheets, but it does not refreshes the external data.

Any help in writing the macro/subroutine to achieve this functionality
would be highly appreciated.

Thanks,
Nayan
 
Nayan said:
Hi All,

I have a workbook consisting of 10 worksheets. First three worksheets
contains Pivot Table, which gets the data from 4th, 5th and 6th
worksheets.
4th, 5th and 6th worksheets gets the data (using a web query) from an
external CSV file. I want to have a "Refresh Data" on the fist sheet,
which
is when clicked, refreshes the external data and the pivot tables in the
following sequence :-
Refresh the data on 4th Sheet.
Refresh the data on 5th Sheet.
Refresh the data on 6th Sheet.
Refresh the Pivot Tables on 1st sheet.
Refresh the Pivot Tables on 2nd sheet.
Refresh the Pivot Tables on 3rd sheet.

I used "ThisWorkbook.RefreshAll", but it refreshes the data in one go, not
in the required sequence. I also tried "Sheets(index).Calculate" for
different sheets, but it does not refreshes the external data.

Any help in writing the macro/subroutine to achieve this functionality
would be highly appreciated.

Thanks,
Nayan

Hi Nayan

I wrote a couple of subs a few years ago when i was experiencing a similiar
problem.

If you call UpdateQueryTablesInWorkBook (to update your web queries) and
then UpdatePivotTablesInWorkBook (to update your pivottables) it ought to
solve your problem.

'Updates all queries in the Workbook
Public Sub UpdateQueryTablesInWorkBook()
Dim s As Worksheet
Dim q As QueryTable

For Each s In ActiveWorkbook.Worksheets
For Each q In s.QueryTables
q.Refresh
Next q
Next s
End Sub

'Updates all Pivottables in the workbook
Public Sub UpdatePivotTablesInWorkBook()
Dim s As Worksheet
Dim p As PivotTable

For Each s In ActiveWorkbook.Worksheets
For Each p In s.PivotTables
With p.PivotCache
.Refresh
End With
Next p
Next s
End Sub

Regards
Marinus Calitz
 
Back
Top