Cambiar la fuente de datos de las tablas dinámicas con VBA

Cambiar la fuente de datos de las tablas dinámicas con VBA

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:

  • CopyY Pasteeste Código como Standard Module.
  • Sheety Source Datalos 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

información relacionada