VBA – Atualizar Tabela Dinâmica / Todas as Tabelas Dinâmicas

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 27, 2023

Este tutorial demonstrará como atualizar uma tabela dinâmica ou todas as tabelas dinâmicas usando o VBA.

As tabelas dinâmicas são uma ferramenta de dados excepcionalmente poderosa do Excel. As tabelas dinâmicas nos permitem analisar e interpretar grandes quantidades de dados agrupando e resumindo campos e linhas.

Quando criamos uma tabela dinâmica, os dados são armazenados no que é conhecido como cache de tabela dinâmica.

Se a fonte de dados da tabela dinâmica for atualizada, a tabela dinâmica em si não será atualizada. O usuário do Excel precisa clicar no botão Atualizar Tudo na guia Dados da faixa de opções para atualizar os dados de origem da tabela dinâmica.

botao atualizar tudo

Como alternativa, podemos escrever macros em VBA que atualizarão os dados para nós!

Atualizar Todas as Conexões de Dados

O método mais simples de atualizar os dados é usar o VBA para imitar o que o botão Atualizar Tudo (Refresh All) faz na faixa de opções.

Sub AtualizarConexao()
    ActiveWorkbook.RefreshAll
End Sub

Esse método atualizará todas as conexões com qualquer dado da pasta de trabalho que estiver ativa. Ele também não atualizará apenas uma única tabela dinâmica, mas várias tabelas dinâmicas se você tiver mais de uma conectada a diferentes conjuntos de dados.

Atualizar Todas as Tabelas Dinâmicas

Para atualizar apenas as tabelas dinâmicas em nossa pasta de trabalho, mas excluir quaisquer outras conexões de dados, podemos usar um método chamado RefreshTable.

Se tivermos várias tabelas dinâmicas em nossa pasta de trabalho, precisaremos fazer um loop em todas as tabelas dinâmicas para atualizá-las. Para fazer isso, primeiro declaramos uma variável de tabela dinâmica e, em seguida, criamos um loop For Each para percorrer todas as tabelas dinâmicas na pasta de trabalho ativa.

Sub AtualizarApenasTabelasDinamicas()
  Dim tblPivot As PivotTable
  For Each tblPivot In ActiveWorkbook.PivotTables
     tblPivot.RefreshTable
  Next tblPivot
End Sub

Podemos usar uma macro semelhante para atualizar as tabelas dinâmicas em nossa Planilha ativa em vez de toda a pasta de trabalho. Em seguida, faríamos um loop pelas tabelas dinâmicas na ActiveSheet em vez de na ActiveWorkbook.

Sub AtualizarSomentePlanilhaAtiva()
   Dim tblPivot As PivotTable
   For Each tblPivot In ActiveSheet.PivotTables
      tblPivot.RefreshTable
   Next tblPivot
End Sub

Essa macro seria mais útil se tivéssemos acesso fácil a ela em nossa ActiveSheet. Para isso, podemos criar um botão na planilha para executar a macro.

botao atualizar dinamicas

Atualizar uma Tabela Dinâmica

Se quisermos atualizar apenas a tabela dinâmica em que estamos trabalhando e não todas as outras tabelas dinâmicas da pasta de trabalho, precisaremos identificar a tabela dinâmica específica. Isso, é claro, desde que você saiba o nome da tabela dinâmica – nesse caso, Tabela dinâmica1.

Sub AtualizarUmaTabela()
   ActiveSheet.PivotTables("Tabela dinâmica1").RefreshTable
End Sub

Atualização do Cache da Tabela Dinâmica

Se tivermos várias tabelas dinâmicas em nossa pasta de trabalho, mas todas elas usarem os mesmos dados, poderemos atualizar o cache da tabela dinâmica em vez de atualizar a tabela dinâmica real. A atualização do cache atualizará automaticamente todas as tabelas dinâmicas que estiverem usando os dados contidos no cache.

Sub AtualizarCache()
   Dim chPivot As PivotCache
   For Each chPivot In ActiveWorkbook.PivotCaches
       chPivot.Refresh
   Next chPivot
End Sub

 

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA