VBA – Actualizar Tabla Dinámica / Todas las Tablas Dinámicas

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on abril 5, 2022

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.

Actualizar todo

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.

Boton refrescar tabla dinamica

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
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples