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
&Paste
este código comoStandard Module
.Sheet
eSource Data
os 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