Como Listar todas tabelas dinâmicas do seu arquivo Excel com VBA

Olá Amigo, neste artigo você aprenderá a Listar todas tabelas dinâmicas do seu arquivo Excel com VBA.

Muitas vezes estamos trabalhando com arquivos grandes e na maioria das vezes estes arquivos possuem muitas tabelas dinâmicas, conexões e vínculos, a pior coisa do mundo é quando atualizamos nossa base de dados vinculada ao SQL e e somos sinalizados que alguma tabela dinâmica está sobrescrevendo a outra ou que determinada tabela dinâmica não pode ser atualizada, e agora? O que faremos? Onde vou encontrar a Tabela dinâmica “X”,”Y” ou “Z”?

Com o código abaixo você deixará de gastar muito tempo procurando onde está e qual é a tabela que está com problema.

Para resolver este problema disponibilizo abaixo o código gratuitamente e de maneira simples, para que você possa implementar no seu arquivo através de um módulo no VBA e listar todas as tabelas dinâmicas do seu arquivo excel…

Só relembrando que o para acessar o ambiente de programação do VBA você deve utilizar os atalhos LT+F11, e posteriormente clicar em inserir módulo.

Listar todas tabelas dinâmicas do arquivo:

Sub ListarPivots()

'Código disponibilizado através do site douglasgodoy.com.br
    Dim St As Worksheet
    Dim NewSt As Worksheet
    Dim pt As PivotTable
    Dim I, K As Long
    Application.ScreenUpdating = False

    'Adiciona uma nova Sheet na pasta de trabalho
    Set NewSt = Worksheets.Add    
    plan = NewSt.Name
    
    'Insere na linha 1 os títulos das colunas
    I = 1: K = 2
    With NewSt
        .Cells(I, 1) = "Nome"
        .Cells(I, 2) = "Source"
        .Cells(I, 3) = "Atualizado por"
        .Cells(I, 4) = "Data de Atualização"
        .Cells(I, 5) = "Sheet/Aba"
        .Cells(I, 6) = "Local"
        
        'Faz um loop mapeando os dados de todas as pivots/tabelas dinâmicas
        For Each St In ActiveWorkbook.Worksheets
            For Each pt In St.PivotTables
                I = I + 1
                .Cells(I, 1).Value = pt.Name
                .Cells(I, 2).Value = pt.SourceData
                .Cells(I, 3).Value = pt.RefreshName
                .Cells(I, 4).Value = pt.RefreshDate
                .Cells(I, 5).Value = St.Name
                .Cells(I, 6).Value = pt.TableRange1.Address                          
                
            Next
        Next
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub

Este código nos ajuda bastante pois através dele conseguimos identificar quais são as tabelas dinâmicas do projeto, seus nomes e onde estão localizadas.

Listar as tabelas dinâmicas na mesma sheet que estão:

Sub ListaTabelas()
  Dim tabela As PivotTable
    
  i = 1
  For Each tabela In ActiveSheet.PivotTables
  Range("A" & i) = tabela.Name
  i = i + 1
  Next tabela
  
End Sub

 

Caso você também queira saber como listar o nome de todas as sheets de suas planilhas aqui tem um artigo bem interessante:

LISTAR OS NOMES DE SUAS PLANILHAS:
http://douglasgodoy.com.br/vba-listar-os-nomes-de-suas-planilhas/

Espero que este artigo tenha lhe ajudado, por isso deixe seus comentários e sugestões.

Um abraço!

Douglas Godoy

Comentários