SUSCRÍBASE A NUESTRO BLOG
SOBRE APESOFT

ApeSoft es una compañía de soluciones de Gestión del Rendimiento Empresario: Gamification, Reporting, Dashboards, Planificación Presupuestaria y Balanced Scorecard, fundada en 1994, con sede central en España y oficinas en Estados Unidos.

Más información: Web ApeSoft

« ¿Cada cuánto accede la aplicación servidor, DCServer, al repositorio? ¿Se puede parametrizar? | Main | Cuadro de Mando para el área de RRHH »
martes
oct032006

Tablas dinámicas con memoria

Es muy común diseñar nuevas plantillas Excel partiendo de informes que ya han sido generados por Datacycle Reporting ya que como su estructura de campos y/o tabla dinámica es similar, se vacían de contenido y se toman como base de la nueva plantilla.

Esta práctica tiene un único inconveniente si el informe contiene tablas dinámicas.

Una tabla dinámica de Excel crea una copia oculta (cache) de los datos fuente, de manera, que si en algún momento una tabla dinámica ha estado vinculada a un rango de datos con registros, aunque el rango de datos ahora esté vacio, porque es una plantilla, la tabla dinámica, si desplegamos el contenido de cualquier campo de columna, seguirá mostrando estos registros. Este comportamiento en las tablas dinámicas de Excel, según Microsoft, permite calcular rápidamente una tabla dinámica y al mismo tiempo mantener la integridad de los datos originales.

Hay que tener cuidado ya que si tenemos fórmulas en nuestro informe de tipo ImportarDatosDinamicos que obtienen datos de esta tabla dinámica, pueden estar mostrando información incorrecta.

Para evitar futuros problemas hay 2 opciones:

1. Diseñar plantillas nuevas desde cero o bien partiendo de plantillas distribuidas e instaladas por DataCyle Reporting.

2. Ejecutar una macro que permita inicializar la caché de la tabla dinámica. En este caso, esta macro debe ser ejecutada desde el editor de visual basic de la plantillas. El código VBA es el siguiente:

Información:

- Nombrehoja: Sustituya esta palabra por el nombre de la pestaña de Excel donde está ubicada la tabla dinámica.

- NombreTabla: Sustituya esta palabra por el nombre de la tabla dinámica.

Sub Inicializar()
     Dim pvtTable as PivotTable

     For Each pvtTable In Worksheets("Nombrehoja").PivotTables

          If pvtTable.name="NombreTabla" then

               pvtTable.PivotCache.MissingItemsLimit = xlMissingItemsNone

               pvtTable.PivotCache.Refresh

          End If
     Next pvtTable
End Sub

PrintView Printer Friendly Version

EmailEmail Article to Friend