Alterando a fonte de dados de tabelas dinâmicas com VBA

Alterando a fonte de dados de tabelas dinâmicas com VBA

Estou procurando um código que possa alterar a fonte de dados de minhas tabelas dinâmicas de uma planilha com uma fonte de dados diferente. A planilha de fonte de dados é idêntica apenas com dados diferentes.

Eu tenho um código que tirei da internet, mas em vez de alterar a fonte de dados da minha planilha ativa, ele altera a fonte de dados de todas as minhas planilhas.

Infelizmente, não sei muito sobre codificação VBA para saber como alterar o código para afetar apenas minha planilha ativa e esperava que alguém pudesse me ajudar.

Option Explicit

Sub ChangeDataSourceForAllPivotTables()

    Dim wb                  As Workbook
    Dim ws                  As Worksheet
    Dim pt                  As PivotTable
    Dim rSourceData         As Range

    If ActiveWorkbook Is Nothing Then Exit Sub

    On Error GoTo ErrHandler

    Set wb = ActiveWorkbook

    Set rSourceData = wb.Worksheets("Sheet1").Range("A1").CurrentRegion 'change the name of the worksheet accordingly

    For Each ws In wb.Worksheets
        For Each pt In ws.PivotTables
            pt.ChangePivotCache wb.PivotCaches.Create(xlDatabase, rSourceData.Address(, , , True))
            pt.RefreshTable
        Next pt
    Next ws

ExitTheSub:
    Set wb = Nothing
    Set ws = Nothing
    Set pt = Nothing
    Set rSourceData = Nothing

    Exit Sub

ErrHandler:
    MsgBox "Error " & Err.Number & ":  " & Err.Description, vbCritical, "Error"
    Resume ExitTheSub

End Sub

Agradeço antecipadamente a ajuda!

Responder1

Este código o ajudará a alterar os dados de origem de todas as tabelas dinâmicas em uma planilha específica.

Sub ChangePivotSourceData()

Dim pt As PivotTable

For Each pt In ActiveWorkbook.Worksheets("Sheet1").PivotTables
         pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
            (SourceType:=xlDatabase, SourceData:="MyData")
Next pt

End Sub

Como funciona:

  • Copy& Pasteeste código como Standard Module.
  • Sheete Source Dataos nomes são editáveis.
  • Neste códigoMeus dadosé umIntervalo Nomeado, que você precisa criar antes deCORRER este Código toda vez que você quiser alterarDados de origem para tabela dinâmica.

Responder2

Gostaria de dividir um documento por destino (por exemplo) e criar automaticamente vários arquivos específicos (para cada destino) com o gráfico dinâmico relevante. Como fazer para atualizar sempre a fonte de dados dos novos gráficos dinâmicos (Espanha, Itália, França...)? Pois mantêm a fonte de dados original com todos os destinos (Europa). Obrigado

Dim pt As PivotTable
    Dim MyData As Excel.ListObject
   
    Set MyData = Application.Range(Europe).ListObject
   
For Each pt In ActiveWorkbook.Worksheets("Chart - City").PivotTables
         pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create _
            (SourceType:=xlDatabase, SourceData:="MyData")
Next pt

informação relacionada