Llevo unos días peleándome con el modelo de objetos de las tablas dinámicas. ¿Para qué? Para poder extender su funcionalidad. Si tienes Visual Studio 2010, crear un add-in para Excel es tan sencillo como indicar que vas a crear un nuevo proyecto de tipo Add-in para Office 2010 y a partir de ahí, ya puedes añadir funcionalidad a tu Office.

En el caso de Excel 2010 me interesa extender las funcionalidades de la tabla dinámica (o PivotTable para los amigos), pero para ello hay que saber en qué parte de tu woorkbook estás. Para eso es necesario pensar en posiciones relativas y que elementos están relacionados con dichas posiciones. ActiveCell nos va a decir que celda es la activa en el momento de ejecución y a partir de ahí podemos acceder a todos los objetos que sean válidos en esa celda.

Para el caso de las tablas dinámicas, el objeto a diseccionar va a ser PivotTable. Así para acceder a los valores que está manejando la tabla dinámica que hay creada en una hoja accederemos como Application.ActiveCell.PivotTable y a partir de ahí se abre todo un mundo de objetos y propiedades que nos van a permitir añadir nuevas funciones que eliminen algunas de las limitaciones que hayamos podido encontrar en Excel cuando nos conectamos a un cubo de Analysis Services (SSAS).

Un buen ejemplo de que se puede hacer son las PivotTable extensions que se pueden bajar de CodePlex, además pueden servir como guía para ver como codificar tu propio add-in.

Como punto de partida para ver con qué elementos contamos tenemos el interface de PivotTable publicado en MSDN.

Ahora bien entender el modelo y sus relaciones no es sencillo, aquí os pongo un pequeño resumen con lo que he experimentado que espero que ayude para aclarar que es cada cosa.

  • PivotTable – El objeto PivotTable (o tabla dinámica en si).
  • PivotCell – Cada una de las celdas que están dentro del rango de la tabla dinámica. Pueden tener valores, o elementos de las dimensiones, así como las cabeceras y totales.
  • PivotField – Cada uno de los elementos que se pueden utilizar para componer la zona de filas, columnas, datos, etc en la PivotTable (digamos que son los elementos que nos salen en la lista de campos y que el usuario utiliza directamente). A su vez, cada uno de estos elementos tiene asociado un CubeField que lo mapea con un elemento del cubo OLAP al que está conectada la PivotTable.
  • PivotCache – Contiene la información relacionada con la conexión utilizada actualmente por la PivotTable así como los datos actuales en memoria.

A través de estos objetos podemos acceder a algunos datos interesantes:

  • Obtener la cadena de conexión:

    Application.ActiveCell.PivotTable.PivotCache.WorkbookConnection.OLEDBConnection.Connection

  • Obtener el nombre del cubo con el que estamos trabajando:

    Application.ActiveCell.PivotTable.PivotCache.WorkbookConnection.OLEDBConnection.CommandText

  • Obtener la configuración del número de filas máximas a devolver en una visualización de detalle: Application.ActiveCell.PivotTable.PivotCache.WorkbookConnection.OLEDBConnection.MaxDrillthroughRecords
  • Conocer el nombre del campo con el que se está rellenando una celda:

    Application.ActiveCell.PivotCell.DataField.SourceName

  • Identificar si un campo de una celda hace referencia a una métrica calculada, una métrica, un atributo, etc.:

    Application.ActiveCell.PivotField.CubeField.CubeFieldSubType

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

El RGPD y la anonimización mediante HASH

Antes de cargar nuestros datos en la nube debemos tener muy en cuenta el Reglamento General de Protección de Datos RGPD o sus siglas en inglés GDPR, se trata de una norma europea relativa a la protección de las personas físicas en lo que respecta al tratamiento de sus datos personales y la libre circulación de estos datos.
Leer más

SQL Server 2017 en Linux

Vale, SQL Server 2017 corre en Linux, ¿me interesa? Sí, ¿por qué? Porque no hablamos simplemente de que corra un nuevo sistema operativo...sino que se pueden utilizar para despliegues rápidos en entornos escalables basados en docker, kubernetes, etc. Daremos un repaso a cómo aprovecharnos de los nuevos escenarios de despliegue en nuestras empresas, aunque sean tradicionalmente entornos Microsoft.