2016-03-18 4 views
0

У меня есть некоторый код vb, который обновит мои сводные таблицы для меня, есть ли способ сделать это, чтобы я мог обновлять сводные таблицы с 1 по 20? Вместо того, чтобы листинг 20 строк кода ниже EgExcel 2013 vba - Обновить сводные таблицы - Loop

ActiveWorkbook.PivotTables(1).PivotCache.Refresh 
ActiveWorkbook.PivotTables(2).PivotCache.Refresh 
ActiveWorkbook.PivotTables(3).PivotCache.Refresh 

Etc ..

Большое спасибо заранее!

ответ

2

В качестве примера: Если вы хотите, чтобы обновить все шарнирные тайники в вашей книге, вы можете сделать что-то вроде этого:

Sub RefreshPivotCache() 
    Dim ws As Worksheet 
    Dim PT As PivotTable 

    For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook 
     For Each PT In ws.PivotTables  '<~~ Loop all pivot tables in worksheet 
      PT.PivotCache.Refresh 
     Next PT 
    Next ws 
End Sub 
0

попробовать это:

Option Explicit

Sub RefresfPivotTables() 

Sheets("YOUR_SHEET").Select 

Dim i As Integer 

For i = 1 To 20 

    ActiveSheet.PivotTables("PivotTable" & i).PivotCache.Refresh 

Next i 

End Sub 
+0

Привет, я думаю, что это лучшее решение, поэтому я могу рассчитать количество опорных точек. Однако иногда точка привязки подключена к файлу только для чтения. Файл только для чтения открыт, и я могу обновляться за пределами vb, но когда я пытаюсь запустить с vb, я получаю ошибку 1004. Есть ли что-нибудь, что я могу добавить, чтобы справиться с этим? Спасибо заранее! – Baseline9

1

Вы можете использовать это, это также будет проходить каждый рабочий лист в книге, а каждая сводная таблица в каждом листе и обновлять таблицу &.

Sub RefreshPivotData() 
Dim pvotCht As PivotTable, Sheet As Worksheet 
    For Each Sheet In ThisWorkbook.Worksheets 
     For Each pvotTbl In Sheet.PivotTables 
      pvotTbl.RefreshTable 
      pvotTbl.Update 
     Next 
    Next 
ThisWorkbook.Save 
End Sub