W przypadku, gdy naszym zadaniem jest odświeżenie wszystkich zewnętrznych źródeł danych korzystających z tzw. QueryTables, możemy skorzystać z makra używanego m. in. do odświeżania tabel przestawnych w naszym skoroszycie. Uruchomienie poniższego kodu spowoduje odświeżenie wszystkich tabel przestawnych oraz źródeł danych. Działa analogicznie jak kliknięcie przycisku „Odśwież” w zakładce „Dane”.
Sub RefreshAll() ActiveWorkbook.RefreshAll End Sub
Jeśli chcemy, by z całości naszego raportu odświeżone zostały jedynie źródła danych, powinniśmy zastosować w tym celu kod odwołujący się jedynie do konkretnej tabeli, którą chcemy odświeżyć. Przykład poniżej:
Sub RefreshTable() Range("Nazwa_tabeli").Select Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False End Sub
W przypadku, gdy nasz skoroszyt zawiera dużą liczbę zewnętrznych źródeł danych, bądź też istnieje możliwość, że przyszłości źródeł danych będzie więcej, najlepszym sposobem jest wykorzystanie pętli wyszukującej i odświeżającej po kolej tabele danych. Poniższy przykład wyszukuje:
Sub RefreshAllExtDataTables() Dim CustWks As Worksheet Dim CustQt As QueryTable Dim CustLo As ListObject For Each CustWks In Worksheets For Each CustQt In CustWks.QueryTables CustQt.Refresh BackgroundQuery:=False Next CustQt For Each CustLo In CustWks.ListObjects CustLo.QueryTable.Refresh BackgroundQuery:=False Next CustLo Next CustWks End Sub
Komentarz do “Odświeżanie zewnętrznych tabel danych”
Przy uruchamianiu trzeciego przykładu, Excel zgłasza błąd ’1004′ Application-defined or object-defined error, ze wskazaniem na linię CustLo.QueryTable.Refresh BackgroundQuery:=False