VBA – Actualizar Tabla Dinámica / Todas las Tablas Dinámicas
In this Article
Este tutorial demostrará cómo actualizar una tabla dinámica o todas las tablas dinámicas utilizando VBA.
Las tablas dinámicas son una herramienta de datos excepcionalmente poderosa de Excel. Las tablas dinámicas nos permiten analizar e interpretar grandes cantidades de datos agrupando y resumiendo campos y filas.
Cuando creamos una tabla dinámica, los datos se almacenan en lo que se conoce como caché de la tabla dinámica. Si la fuente de datos de la tabla dinámica se actualiza, la propia tabla dinámica no se actualiza.
El usuario en Excel necesita hacer clic en el botón Actualizar todo de la pestaña Datos de la cinta de opciones para actualizar los datos de origen de la tabla dinámica.
Alternativamente, podemos escribir macros en VBA que actualizarán los datos por nosotros
Actualizar todas las conexiones de datos
El método más sencillo para actualizar los datos es utilizar VBA para imitar lo que hace el botón Refresh All en la cinta de opciones.
Sub RefrescarConexiones()
ActiveWorkbook.RefreshAll
End Sub
Este método refrescará todas las conexiones a cualquier dato del libro de trabajo que tenga activo. Además, no sólo refrescará una única tabla dinámica, sino que refrescará múltiples tablas dinámicas si tiene más de una conectada a diferentes conjuntos de datos.
Actualizar todas las tablas dinámicas
Para refrescar sólo las tablas dinámicas de nuestro libro de trabajo pero excluyendo cualquier otra conexión de datos, podemos utilizar un método llamado RefreshTable.
Si tenemos varias tablas dinámicas en nuestro libro, tendríamos que recorrer todas las tablas dinámicas para actualizarlas todas. Para ello, primero declaramos una variable de tabla dinámica y luego creamos un bucle For Each para recorrer todas las tablas dinámicas del libro activo.
Sub RefreshPivotsOnly()
Dim tDinamica As PivotTable
For Each tDinamica In ActiveWorkbook.PivotTables
tDinamica .RefreshTable
Next tDinamica
End Sub
Podemos utilizar una macro similar para refrescar las tablas dinámicas de nuestro Hoja Activa en lugar de todo el libro de trabajo. En este caso, se haría un bucle a través de las tablas dinámicas en la ActiveSheet en lugar de en el ActiveWorkbook.
Sub RefrescarTablasDinamicasDeLaHojaActiva()
Dim tDinamica As PivotTable
For Each tDinamica In ActiveSheet.PivotTables
tDinamica .RefreshTable
Next tDinamica
End Sub
Esta macro sería muy útil si tuviéramos un fácil acceso a ella en nuestra ActiveSheet. Para ello, podemos crear un botón en la hoja para ejecutar la macro.
Refrescar una Tabla Dinámica
Si sólo queremos refrescar la tabla dinámica en la que estamos trabajando y no todas las demás tablas dinámicas del libro, tenemos que identificar la tabla dinámica concreta. Esto es, por supuesto, siempre y cuando conozcas el nombre de la tabla dinámica – en este caso Tabladinámica1.
Sub ActualizarUnaTabla()
ActiveSheet.PivotTables("Tabladinámica1").RefreshTable
End Sub
Refrescar la caché de la tabla dinámica
Si tenemos varias tablas dinámicas en nuestro libro, pero todas utilizan los mismos datos, podemos actualizar la caché de la tabla dinámica en lugar de actualizar la tabla dinámica real. Al refrescar la caché se refrescarán automáticamente todas las tablas dinámicas que estén utilizando los datos contenidos en la caché.
Sub Actualizar_Cache()
Dim chPivot As PivotCache
For Each chPivot In ActiveWorkbook.PivotCaches
chPivot.Refresh
Next chPivot
End Sub