Tabla dinámica en macro

Tengo inconvenientes en el funcionamiento de una macro que utilizo y que paso a comentarte
Todos los meses corro una macro que toma datos de una planilla excel y los convierte en una tabla dinámica.
La cantidad de registros se incrementa mes a mes y mi macro de tabla dinámica se mantiene siempre invariable en el rango que utilizo.
Para actualizar ese rango debo hacerlo de forma manual y saber que rango debe tomar de ese archivo.
¿Cómo se puede hacer para actualizar ese rango en forma automática cada vez que se procesa la macro?
Este es el detalle de la macro donde muestra el rango a tomar para la tabla dinámica.
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Hoja1!R1C1: (ESTE EL DATO QUE TENGO QUE CAMBIAR TODOS LOS MESES )---------> R2083C5").CreatePivotTable TableDestination:="", TableName:="Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("pep")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("Ejercicio SAP")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields(" Alta"), "Suma de Alta", _
xlSum
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False

1 respuesta

Respuesta
1
Lo primero, en la hoja donde vuelcas los datos, llama a una celda cualquiera "datos" (dónde pone A1, a la izq. de la barra de fómulas, escribes datos)
Después coge tu tabla dinámica, botón derecho y asistente, ve atrás hasta "origen de datos" (lo que cambias todos los meses con tu macro) y ahí escribes datos
después genera otra macro como sigue:
sub Worksheet_Activate()
   ActiveWorkbook.Names.Add Name:="datos", RefersTo:=Hoja1.Range("d5").CurrentRegion
   ActiveWorkbook.PivotCaches(1).Refresh
    End Sub
Asegúrate que en "d5" tienes datos de los que importas, o sustituye en la macro "d5" por cualquier celda de las que importas datos (según tu ejemplo"a1" es dónde comienzas a importar)
Al ejecutar esa macro hará que la referencia "datos" sea el rango completo de tus datos que importas, vuelcas o copias en la hoja. Y ese rengo es del que toma siempre los datos la tabla dinámica... no tendás que volver a ejecutar esta macro y tu td estará siempre actualizada al abrir esa hoja...
Hola estimado...
He resuelto el problema de la siguiente manera, la cual me han informado desde otra página.
Genere un nombre al cual le introduje la siguiente fórmula
=DESREF($A$1,0,0,CONTARA($A:$A),CONTARA($1:$1))
El nombre de este rango lo introduje en la tabla dinámica. Y a partir de allí funciona perfecto.
He probado la solución que me brindaste y también funciono satisfactoriamente.
Mil gracias por la pronta respuesta.
Un abrazo.
Omar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas