VBA – Atualizar Tabela Dinâmica / Todas as Tabelas Dinâmicas
In this Article
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.
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.
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