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. Os dados são, portanto, armazenados na memória cache do PC, o que acelera a tabela dinâmica.
Se a fonte de dados da tabela dinâmica for atualizada, a própria tabela dinâmica não será atualizada. O usuário no Excel precisa clicar no Atualize tudo botão na guia Dados na faixa de opções para atualizar os dados de origem da Tabela Dinâmica.
Alternativamente, podemos escrever macros em VBA que irão atualizar os dados para nós!
Atualizar todas as conexões de dados
O método mais simples para atualizar os dados é usar o VBA para imitar o que Atualize tudo botão faz na faixa de opções.
123 | Sub RefreshConnections ()ActiveWorkbook.RefreshAllEnd Sub |
Este método atualizará todas as conexões com quaisquer dados na pasta de trabalho que você tenha ativo. Ele também não apenas atualizará uma única tabela dinâmica, mas atualizará várias tabelas dinâmicas se houver mais de uma conectada a conjuntos de dados diferentes.
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 percorrer 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.
123456 | Sub RefreshPivotsOnly ()Dim tblPivot como tabela dinâmicaPara cada tblPivot em ActiveWorkbook.PivotTablestblPivot.RefreshTablePróximo tblPivotEnd Sub |
Podemos usar uma macro semelhante para atualizar as tabelas dinâmicas em nosso Folha Ativa em vez de toda a pasta de trabalho. Em seguida, faríamos um loop pelas tabelas dinâmicas no ActiveSheet ao invés do ActiveWorkbook.
123456 | Sub RefreshActiveSheetPivotsOnly ()Dim tblPivot como tabela dinâmicaPara cada tblPivot em ActiveSheet.PivotTablestblPivot.RefreshTablePróximo tblPivotEnd Sub |
Esta macro seria mais útil se tivéssemos acesso fácil a ela em nosso ActiveSheet. Para isso, podemos criar um botão na planilha para executar a macro.
Atualizar uma Tabela Dinâmica
Se quisermos apenas atualizar a tabela dinâmica em que estamos trabalhando e não todas as outras tabelas dinâmicas da pasta de trabalho, precisamos identificar a tabela dinâmica específica. Isso é claro, contanto que você saiba o nome da tabela dinâmica - neste caso Tabela Dinâmica 1.
123 | Sub RefreshOneTableActiveSheet.PivotTables ("PivotTable1"). RefreshTableEnd Sub |
Atualizando o Cache da Tabela Dinâmica
Se tivermos várias tabelas dinâmicas em nossa pasta de trabalho, mas todas usarem os mesmos dados, podemos 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 estão usando os dados contidos no cache.
123456 | Sub RefreshCache ()Dim chPivot As PivotCachePara cada chPivot em ActiveWorkbook.PivotCacheschPivot.RefreshPróximo chPivotEnd Sub |