Macro para hacer varias tablas dinámicas en un mismo libro

Tengo en un libro de excel muchas hojas, y me gustaría hacer una macro para poder hacer una tabla dinámica de cada una de las hojas.

He conseguido hacer una macro para hacer una sola tabla dinámica, pero cuando la ejecuto por segunda vez me aparece error. La dejo aquí por si sabéis cual es el error.

Muchas gracias!

Sub CrearTablaDinamica()

    'Deshabilitar la actualización en pantalla y el despliegue de alertas

    Application.ScreenUpdating = False

    Application.DisplayAlerts = Fals

'PASO 1: Insertar una nueva hoja de Excel

'(OPCIONAL) Camiar el nombre de la hoja nueva: TablaDinamica

'Crear Hoja TablaDinamica

    Worksheets.Add(Before:=ActiveSheet).Name = "TablaDinamica"

'PASO 2: Crear el Pivot Cache

'Cambiar el nombre de la Tabla de Excel que contiene los datos: "Tabla1"

    Set PCache = ActiveWorkbook.PivotCaches.Create( _

    SourceType:=xlDatabase, SourceData:="Tabla1")

    'PASO 3: Crear la Tabla Dinámica en blanco

    'Cambiar referencia a donde se insertará Tabla Dinámica: "TablaDinamica!R3C1"

    'Cambari nombre de la Tabla Dinámica (debe ser único): "Tabla dinámica1"

    Set TDinamica = PCache.CreatePivotTable( _

    TableDestination:="TablaDinamica!R2C1", TableName:="Tabla dinámica" & Contar)

    'PASO 5: Insertar filas a la tabla dinámica

    'Cambiar nombres de los campos a insertar: "Año", "Mes"

    With TDinamica.PivotFields("FECHA")

     .Orientation = xlRowField

     .Position = 1

    End With

    'PASO 6: Insertar valores a la tabla dinámica

    'Cambiar nombre del campo a insertar: "Monto"

    'Indicar la operación para los valores: xlSum

    'Modificar el formato de números: NumberFormat

    With TDinamica.PivotFields("CAPTURAS")

     .Orientation = xlDataField

     .Position = 1

     .Function = xlSum

     .NumberFormat = "#,##0"

    End With

With TDinamica.PivotFields("PRECIO/KG")

     .Orientation = xlDataField

     .Position = 2

     .Function = xlAverage

     .NumberFormat = "#,##0"

    End With

 With TDinamica.PivotFields("INGRESOS")

     .Orientation = xlDataField

     .Position = 3

     .Function = xlSum

     .NumberFormat = "#,##0"

    End With

    'Habilitar la actualización en pantalla y el despliegue de alertas

    Application.DisplayAlerts = True

    Application.ScreenUpdating = True

End Sub

Añade tu respuesta

Haz clic para o