Estoy buscando un código que pueda cambiar la fuente de datos de mis tablas dinámicas desde una hoja con una fuente de datos diferente. La hoja de fuente de datos es idéntica solo que con datos diferentes.
Tengo un código que tomé de Internet, pero en lugar de cambiar la fuente de datos de mi hoja activa, cambia la fuente de datos de todas mis hojas.
Lamentablemente, no sé mucho sobre codificación VBA para saber cómo cambiar el código para que afecte solo a mi hoja activa y esperaba que alguien pudiera ayudarme.
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
¡Gracias por adelantado por la ayuda!
Respuesta1
Este código le ayudará a cambiar los datos de origen de todas las tablas dinámicas en una hoja en particular.
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
Cómo funciona:
Copy
YPaste
este Código comoStandard Module
.Sheet
ySource Data
los nombres son editables.- en este codigoMis datoses unRango con nombre, que necesitas crear antes de tiCORRER este Código cada vez que quieras cambiarDatos de origen para la tabla dinámica.
Respuesta2
Me gustaría dividir un documento por destino (por ejemplo) y crear automáticamente varios archivos específicos (para cada destino) con el gráfico dinámico correspondiente. ¿Cómo hacer para actualizar la fuente de datos de los nuevos gráficos dinámicos cada vez (España, Italia, Francia...)? Ya que mantienen la fuente de datos original con todos los destinos (Europa). Gracias
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