Refrescando todas as tabelas dinâmicas do meu excelente livro de exercícios com uma macro

Tenho um livro de exercícios com 20 mesas giratórias diferentes. Existe alguma forma fácil de encontrar todas as tabelas dinâmicas e actualizá-las em VBA?

Solução

Sim.

ThisWorkbook.RefreshAll

Ou, se a sua versão em Excel for suficientemente antiga,

Dim Sheet as WorkSheet, Pivot as PivotTable
For Each Sheet in ThisWorkbook.WorkSheets
    For Each Pivot in Sheet.PivotTables
        Pivot.RefreshTable
        Pivot.Update
    Next
Next
Comentários (7)

Este código VBA atualizará todas as tabelas/parâmetros pivot na pasta de trabalho.

Sub RefreshAllPivotTables()

Dim PT As PivotTable
Dim WS As Worksheet

    For Each WS In ThisWorkbook.Worksheets

        For Each PT In WS.PivotTables
          PT.RefreshTable
        Next PT

    Next WS

End Sub

Outra opção não programática é:

  • Clique com o botão direito em cada tabela pivot
  • Selecione Opções da tabela
  • Assinale a opção 'Actualizar em aberto'.
  • Clique no botão OK.

Isto irá actualizar a tabela dinâmica cada vez que a pasta de trabalho for aberta.

Comentários (0)

Você tem uma coleção de PivotTables em um objeto VB Worksheet. Então, um loop rápido como este vai funcionar:

Sub RefreshPivotTables()
    Dim pivotTable As PivotTable
    For Each pivotTable In ActiveSheet.PivotTables
        pivotTable.RefreshTable
    Next
End Sub

Notas das trincheiras:

  1. Lembre-se de desproteger qualquer folha protegida antes de actualizar a PivotTable.
  2. Poupe com frequência.
  3. I'pensará em mais e actualizará a seu tempo... :)

Boa sorte!

Comentários (0)