About the PowerPivot Model Object in Excel
Learn about the PowerPivot add-in model and its object model in Excel.
The PowerPivot add-in enables you to visually build your own cubes. A data cube is an array of data defined in dimensions or layers. The Model object in Excel implemented by the PowerPivot add-in provides the foundation to load and combine source data from several data sources for data analysis on the desktop, including relational databases, multidimensional sources, cloud services, data feeds, Excel files, text files, and data from the Web. Excel integrates additional data sources and enables the ability to combine data from multiple data sources.
The creation and deletion of the PowerPivot Model (PPM) is triggered by user exposed actions and cannot be created directly by the developer.
Relationships defined
Throughout this article, we will refer to the connection between two tables that establishes how the data should be correlated as relationships.
Relationships join together data from previously unrelated data sources. Each relationship has a Primary Key and a Foreign Key. Relationships allow the data to be joined together into a single model. This allows for:
- Filtering data in one table by data in a related table
- Filtering data by related columns
- Integrating columns from multiple tables into a PivotTable/PivotChart
- Keeping workbooks smaller by not having to repeat data
Single Models Only
Excel with the PowerPivot add-in creates a single model in the workbook to which it can add data sources, create, modify, and relate tables. There can only be a single model in a workbook.
Working with OLAP data sources
When connecting to an OLAP data source such as Analysis Services and creating OLAP PivotTables, PivotCharts, Slicers or Cube functions, no model is created. Workbooks created with the PowerPivot add-in can be uploaded to SharePoint, loaded in memory on the server, and accessed by other workbooks as if it were a normal instance of SQL Server Analysis Services.
Trigger the creation of a PowerPivot Model
By default, XLSX files in Excel 2010 and Excel don't have a PPM initialized in them until the model is deemed necessary. Certain actions trigger the creation of a PPM if there is no existing model in the workbook. The following sections describe the actions that will trigger the creation of a PPM when it does not exist in the workbook.
Add a new non-legacy data source
Any time you import certain types of data, a new model is created in the workbook (if one does not already exist) that contains the connection properties, table representation of the workbook data sources, and the relationships between them. This includes internal data sources like ranges and tables. The following table lists the different data sources that can be integrated with the PPM.
Data Source | Description | Table Preview | Query Supported |
---|---|---|---|
Microsoft SQL Server | Already supported in Excel | Yes | Yes |
Microsoft SQL Azure Data Market | Supported as a new data feed data source | Yes | No |
Microsoft SQL Server Parallel Data Warehouse | Supported via installed OLE DB driver | Yes | Yes |
Microsoft Access | Already supported in Excel | Yes | Yes |
Oracle | Already supported in Excel | Yes | Yes |
Teradata | Available if OLE DB or ODBC driver is installed | No | No |
Sybase | Available if OLE DB or ODBC driver is installed | No | No |
Informix | Available if OLE DB or ODBC driver is installed | No | No |
IBM Db2 | Available if OLE DB or ODBC driver is installed | No | No |
Microsoft Analysis Services | Already supported in Excel | Yes | Yes |
Report (SSRS) | Can read and use connections, but no authoring in Excel client | Yes | No |
Text | From Excel dialog in Ribbon UI | Yes | No |
Data Feeds (OData) | Supported as a new data source | Yes | Yes |
XML | Already supported in Excel | No | No |
SharePoint Lists | Already supported in Excel. Excel uses the DataFeed provider to connect to SharePoint | No | No |
SharePoint | New feature in Excel | Yes | Yes |
Excel Tables | User defined table in Excel used for new data feature. A Worksheet data connection is created to the table when the table is created. | N/A | N/A |
Excel Ranges | User defined range in Excel used for new data feature. A Worksheet data connection in this case is created to the range only if a data feature like a chart or PivotTable uses the range. | N/A | N/A |
Create a new Excel non-OLAP PivotTable
New Excel PivotTables, other than the ones created from an OLAP data source, will be based on a PPM therefore if a PPM is not present in the file a new one is created as part of the PivotTable creation action. This includes the following:
- Using the insert PivotTable user interface
- Summarizing data with PivotTable user interface
- PivotTable based off of a non-OLAP data source created through the Microsoft Visual Basic for Applications (VBA) object model
Create a new Excel non-OLAP PivotChart
In Excel, PivotTables and PivotCharts have the ability to be no longer coupled. Therefore on insertion of a PivotChart in a workbook without a model, a PPM will be created.
Paste Excel non-OLAP PivotTables from another workbook
When pasting a PivotTable or PivotChart from another workbook that is based off of a PPM into one that does not have a PPM, a new PPM will be created in the destination workbook. A new data source will be added to the newly created model pointing to the underlying data of the originating PivotTable/PivotChart.
Undo the creation of a PowerPivot Model
All actions that lead to the creation of a PPM can be undone. If these actions are selected from the undo menu, the actual model creation will not be undone but nothing will be added to it; therefore it will remain empty. When the workbook is saved, if the model is empty, the model will not be saved with the file. There is no explicit way for you to manually delete a model created in the workbook.
Note
Similar to the behavior in Excel 2010, there is a restriction in what model sizes can be undone. When a model grows to this limit size undo functionality for actions such as refresh will no longer be provided. The current limit for native PivotTables is 300,000 rows, at 28 bytes a cell this limit is roughly 8MB in memory. These values can be set by using Advanced Options in Excel as shown in the following figure.
The PowerPivot Model Object Model
A workbook will be able to have one and only one Model object. The Model object represents the top level object that contains all its connections, relationships, and tables.
You're not able to manually create a model in a workbook; creation of the model is triggered through the actions described in a previous section in this article. If any of these actions are performed through the Object Model (OM), a new model is created. The purpose of this OM is for the programmatic creation of relationships between model tables resulting in joined tables, combining PivotTables, and so forth. For you to be able to this, you must be able to explore the model to find the appropriate tables and within the tables find the appropriate columns that would be used to create the relationship.
Model Object
The Model object stores references to workbook connections and information about the tables and relationships contained within the PPM. The following table lists the properties of the Model object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified Model object. |
ModelTables | Read-only | ModelTable | Collection of tables inside the PPM. |
ModelRelationships | Read-only | ModelRelationships | Collection of relationships between PPM tables. |
DataModelConnection | N/A | WorkbookConnection | Returns the model workbook connection object from the workbook connections collection which connects to the model. |
Model.AddConnection Method
Adds a new workbook connection to the model with the same properties as the one supplied as an argument. This method only works on non-model external connections and will return an error if called with an external model connection as its argument. When calling this method, a new model connection is created and it is named the same as the legacy connection with an integer at the end to make the name unique. The following table lists the parameters of the AddConnection method.
Name | Required/Optional | Type | Description |
---|---|---|---|
ConnectionToDataSource | Required | WorkbookConnection | The Workbook connection |
Model.CreateModelWorkbookConnection Method
Calling this method returns a WorkbookConnection object of type ModelConnection. A model connection connected to the specified table is returned. This type of connection can only be used by query tables in Excel. The following table lists the parameters of the CreateModelWorkbookConnection method.
Name | Required/Optional | Type | Description |
---|---|---|---|
ModelTable | Required | Variant | Either a model table name or a model table object. |
Model.Initialize Method
The Initialize method of the Model object has no parameters. Initializes the PPM. This is called by default the first time the model is used.
Model.Refresh Method
The Refresh method of the Model object has no parameters. Refreshes all data sources associated with the model, fully reprocesses the model and updates all Excel data features associated with the Model object.
ModelChanges Object
Represents changes made to the PPM. The ModelChanges object contains information about which changes were made to the data model when the Workbook.ModelChange event occurs after a model operation. When Excel makes changes to the data model, multiple changes can be made in the same operation and the ModelChanges object will include information about all the changes made in one model operation. The following table lists the properties of the ModelChanges object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
ColumnsAdded | Read-only | ModelColumnNames | Returns a ModelColumnNames collection of ModelColumnName objects which represent all columns added as part of a model operation. |
ColumnsChanged | Read-only | ModelColumnChanges | Returns a ModelColumnChanges collection of ModelColumnChange objects which represent table names and column names of all table columns for which the data type was changed as part of a model operation. |
ColumnsDeleted | Read-only | ModelColumnNames | Returns a ModelColumnNames collection of ModelColumnName objects which represent all columns which were deleted as part of a model operation. |
MeasuresAdded | Read-only | ModelMeasureNames | Returns a ModelMeasureNames collection of ModelMeasureName objects which represent all measures which were added as part of a model operation. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelChanges object. |
RelationshipChange | Read-only | Boolean | When True, one or more relationships in the model were changed (added, deleted or modified) as part of a model operation. When False, no relationships were changed during the operation. |
TableNamesChanged | Read-only | ModelTableNameChanges | Returns a ModelTableNameChanges collection of ModelTableNameChange objects that represents old and new names of all tables which were renamed in the model as part of a model operation. |
TablesAdded | Read-only | ModelTableNames | Returns a ModelTableNames collection of table names as strings that represents all tables which were added to the model as part of a model operation. |
TablesDeleted | Read-only | ModelTableNames | Returns a ModelTableNames collection of table names as strings that represents all tables which were deleted from the model as part of a model operation. |
TablesModified | Read-only | ModelTableNames | Returns a ModelTableNames collection of table names as strings that represents all tables which were refreshed or recalculated as part of a model operation. |
UnknownChange | Read-only | Boolean | True when a non-specified change was made to the model as part of a model transaction. |
ModelColumnChanges Collection
A collection of ModelColumnChange objects that represent columns for which the data type was change in the PPM. The following table lists the properties of the ModelColumnChanges collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelColumnChange objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelColumnChanges object. |
ModelColumnChanges.Item Method
Returns a single object from the ModelColumnChanges collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelColumnChange Object
An object that represents a column in a table in the PPM for which the data type was changed. The following table lists the properties of the ModelColumnChange object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
ColumnName | Read-only | String | String that represents the name of a column for which the data type was changed. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelColumnChange object. |
TableName | Read-only | String | String that represents the name of a table in the PPM for which the data type of a column was changed. |
ModelColumnNames Collection
A collection of ModelColumnName objects that represents columns of tables in the PPM. The following table lists the properties of the ModelColumnNames collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelColumnName objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelColumnNames collection. |
ModelColumnNames.Item Method
Returns a single object from the ModelColumnNames collection. The following table lists the parameters of the Item method
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelColumnName Object
An object that represents the name of a column in the PPM. The following table lists the properties of the ModelColumnName object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
ColumnName | Read-only | String | String that represents the name of a column of the table identified by the TableName property. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelColumnName object. |
TableName | Read-only | String | String that represents the name of a table in the PPM. |
ModelConnection Object
The ModelConnection object will contain information for the new Model Connection Type introduced in Excel to interact with the integrated PPM. The following table lists the properties of the ModelConnection object.
Property | Read/Write | Type | Description |
---|---|---|---|
ADOConnection | Read-only | ADOConnection | Used to create an open connection to a data source. Enables add-ins, such as the PowerViewer, to create a direct connection to the engine and hence the data model. |
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
CommandText | Read/Write | Variant | Returns or sets the command string for the specified data source (table). |
CommandType | Read/Write | xlCmdType | Returns or sets one of the xlCmdType constants specifying the command type. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelConnection object. |
ModelMeasureNames Collection
The ModelMeasureNames collection contains a collection of ModelMeasureName objects in the PPM. The following table lists the properties of the ModelMeasureNames collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelMeasureName objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelMeasureNames collection. |
ModelMeasureNames.Item Method
Returns a single object from the ModelMeasureNames collection. The following table list the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelMeasureName Object
An object that represents the name of a measure in the PPM. The following table lists the properties of the ModelMeasureName object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
MeasureName | Read-only | String | String that represents the new name a measure which was added to the ModelTable object identified by the TableName property. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelMeasureName object. |
TableName | Read-only | String | String that represents the name of a table in the PPM. |
ModelRelationships Collection
The ModelRelationships collection contains a collection of ModelRelationship objects in the PPM. The following table lists the properties of the ModelRelationships collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelRelationship objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelRelationships collection. |
ModelRelationships.Add Method
Adds a relationship to the ModelRelationships collection. The following table lists the parameters of the Add method.
Name | Required/Optional | Type | Description |
---|---|---|---|
ForeignKeyColumn | Required | ModelTableColumn | A ModelTableColumn object that represents the foreign key column in the table on the many side of the one-to-many relationship. |
PrimaryKeyColumn | Required | ModelTableColumn | A ModelTableColumn object that represents the primary key column in the table on the one side of the one-to-many relationship. |
ModelRelationships.Item Method
Returns a single object from the ModelRelationships collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelRelationship Object
Represent a relationship between ModelTableColumn objects. Used when programmatically creating relationships. The following table lists the properties of the ModelRelationship object.
Property | Read/Write | Type | Description |
---|---|---|---|
Active | Read/Write | Boolean | When True, the relationship is active. |
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
ForeignKeyColumn | Read-only | ModelTableColumn | Contains the ModelTableColumn object that represents the foreign key column on the many side of the one-to-many relationship. |
ForeignKeyTable | Read-only | ModelTable | Contains the ModelTable object that represents the table on the many side of the one-to-many relationship. |
Parent | Read-only | Object | Returns an Object model object that represents the model the ModelRelationship object resides in. |
PrimaryKeyColumn | Read-only | ModelTableColumn | Contains the ModelTableColumn object that represents the primary key column in the table on the one side of the one-to-many relationship. |
PrimaryKeyTable | Read-only | ModelTable | Contains the ModelTable object that represents the table on the one side of the one-to-many relationship. |
ModelRelationship.Delete Method
The Delete method of the ModelRelationship object has no parameters. Deletes a relationship.
ModelTables Collection
The ModelTables collection contains a collection of ModelTable objects in the PPM. The following table lists the properties of the ModelTables collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelTable objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelTables collection. |
ModelTables.Item Method
Returns a single object from the ModelTables collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelTable Object
Represent a table in the Model object. The ModelTable object is read only which means it cannot be created or edited through the object model. There is a ModelTable object for every table in the model. The following table lists the properties of the ModelTable object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
ModelTableColumns | Read-only | ModelTableColumns | Collection of ModelTableColumn objects that make up the ModelTable object. |
Name | Read-only | String | Returns the name of the ModelTable object. |
Parent | Read-only | Object | Returns an Object that represents the model the ModelTable object resides in. |
RecordCount | Read-only | Integer | Returns the total row count for the ModelTable object. |
SourceName | Read-only | String | Name of table at the data source. If table has no data source (created in the model), the property will return an error. |
SourceWorkbookConnection | Read-only | WorkbookConnection | Returns the workbook connection from which the ModelTable object originated. |
ModelTable.Refresh Method
The Refresh method of the ModelTable object has no parameters. Refreshes the model table source connections.
ModelTableColumns Collection
The ModelTableColumns collection contains a collection of ModelTableColumn objects in the PPM. The following table lists the properties of the ModelTableColumns collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelTableColumn objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelTableColumns collection. |
ModelTableColumns.Item Method
Returns a single object from the ModelTableColumns collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelTableColumn Object
Represent a single column in the ModelTable object. Used when programmatically creating relationships. The following table lists the properties of the ModelTableColumn object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
DataType | Read-only | xlParameterDataType | Returns the data type of the column. |
Name | Read-only | String | Returns the name of the ModelTableColumn object. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelTableColumn object. |
ModelTableNames Collection
The ModelTableNames collection contains a collection of ModelTableName objects in the PPM. The following table lists the properties of the ModelTableNames collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelTableName objects in the collection |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelTableNames object. |
ModelTableNames.Item Method
Returns a single object from the ModelTableNames collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelTableNameChanges Collection
The ModelTableNameChanges collection contains a collection of ModelTableNameChange objects in the PPM. The following table lists the properties of the ModelTableNameChanges collection.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Count | Read-only | Long | Returns number of ModelTableNameChange objects in the collection. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the parent object of the specified ModelTableNameChanges collection. |
ModelTableNameChanges.Item Method
Returns a single object from the ModelTableNameChanges collection. The following table lists the parameters of the Item method.
Name | Required/Optional | Type | Description |
---|---|---|---|
Index | Required | Variant | The index number or name of the object. |
ModelTableNameChange Object
An object that represents the old and new name of a table which was renamed in the PPM. The following table lists the properties of the ModelTableNameChange object.
Property | Read/Write | Type | Description |
---|---|---|---|
Application | Read-only | Application | Returns an object that represents the Microsoft Excel application. |
Creator | Read-only | xlCreator | Returns a 32-bit integer that indicates the application in which the specified object was created. |
Parent | Read-only | Object | Returns an Object that represents the model the ModelTableNameChange object resides in. |
TableNameNew | Read-only | String | Returns the new name of the table. |
TableNameOld | Read-only | String | Returns the old name of the table. |
Conclusion
The PowerPivot add-in enables you to build your own cubes instead of using the default ones Excel creates for you behind Power tables. With this add-in, can see the cubes in a visual context and change cube-specific properties. The Model object stores references to workbook connections and information about the Tables and Relationships contained within the PowerPivot Model.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.