Método PivotCache.CreatePivotTable (Excel)
Crea un informe de tabla dinámica basado en un objeto PivotCache. Devuelve un objeto PivotTable .
Sintaxis
expresión. CreatePivotTable (TableDestination, TableName, ReadData, DefaultVersion)
Expresión Variable que representa un objeto PivotCache .
Parameters
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
TableDestination | Obligatorio | Variant | Celda de la esquina superior izquierda del intervalo de destino del informe de tabla dinámica (el rango de la hoja de cálculo donde se colocará el informe de tabla dinámica resultante). El rango de destino debe estar en una hoja de cálculo del libro que contiene el objeto PivotCache especificado por expression. |
TableName | Opcional | Variant | Nombre del nuevo informe de tabla dinámica. |
ReadData | Opcional | Variant | True para crear una caché de tabla dinámica que contenga todos los registros de la base de datos externa; esta memoria caché puede ser muy grande. False para poder configurar algunos de los campos como campos de página basados en servidor antes de leer los datos. |
DefaultVersion | Opcional | Variant | Versión predeterminada del informe de tabla dinámica. |
Valor devuelto
Tabla dinámica
Comentarios
Para obtener una manera alternativa de crear un informe de tabla dinámica basado en una caché de tabla dinámica, vea el método Add del objeto PivotTables .
Ejemplo:
En este ejemplo se crea una nueva caché de tabla dinámica basada en un proveedor OLAP y, a continuación, se crea un nuevo informe de tabla dinámica basado en la caché en la celda A3 de la hoja de cálculo activa.
With ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal)
.Connection = _
"OLEDB;Provider=MSOLAP;Location=srvdata;Initial Catalog=National"
.CommandType = xlCmdCube
.CommandText = Array("Sales")
.MaintainConnection = True
.CreatePivotTable TableDestination:=Range("A3"), _
TableName:= "PivotTable1"
End With
With ActiveSheet.PivotTables("PivotTable1")
.SmallGrid = False
.PivotCache.RefreshPeriod = 0
With .CubeFields("[state]")
.Orientation = xlColumnField
.Position = 1
End With
With .CubeFields("[Measures].[Count Of au_id]")
.Orientation = xlDataField
.Position = 1
End With
End With
En este ejemplo se crea una nueva caché de tabla dinámica mediante una conexión de ADO a Microsoft Jet y, a continuación, se crea un nuevo informe de tabla dinámica basado en la caché en la celda A3 de la hoja de cálculo activa.
Dim cnnConn As ADODB.Connection
Dim rstRecordset As ADODB.Recordset
Dim cmdCommand As ADODB.Command
' Open the connection.
Set cnnConn = New ADODB.Connection
With cnnConn
.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0"
.Open "C:\perfdate\record.mdb"
End With
' Set the command text.
Set cmdCommand = New ADODB.Command
Set cmdCommand.ActiveConnection = cnnConn
With cmdCommand
.CommandText = "Select Speed, Pressure, Time From DynoRun"
.CommandType = adCmdText
.Execute
End With
' Open the recordset.
Set rstRecordset = New ADODB.Recordset
Set rstRecordset.ActiveConnection = cnnConn
rstRecordset.Open cmdCommand
' Create a PivotTable cache and report.
Set objPivotCache = ActiveWorkbook.PivotCaches.Add( _
SourceType:=xlExternal)
Set objPivotCache.Recordset = rstRecordset
With objPivotCache
.CreatePivotTable TableDestination:=Range("A3"), _
TableName:="Performance"
End With
With ActiveSheet.PivotTables("Performance")
.SmallGrid = False
With .PivotFields("Pressure")
.Orientation = xlRowField
.Position = 1
End With
With .PivotFields("Speed")
.Orientation = xlColumnField
.Position = 1
End With
With .PivotFields("Time")
.Orientation = xlDataField
.Position = 1
End With
End With
' Close the connections and clean up.
cnnConn.Close
Set cmdCommand = Nothing
Set rstRecordSet = Nothing
Set cnnConn = Nothing
En este ejemplo se usa WorkbookConnection ya existente.
'Get WorkbookConnection object
Dim conn As WorkbookConnection
Set conn = ActiveWorkbook.Connections("MyConnectionName")
'Declare temp variables
Dim connStr As String
Dim sqlStr As String
'Store connection string and command text in variables depends on connection type
If conn.Type = xlConnectionTypeODBC Then
connStr = conn.ODBCConnection.Connection
sqlStr = conn.ODBCConnection.CommandText
End If
If conn.Type = xlConnectionTypeOLEDB Then
connStr = conn.OLEDBConnection.Connection
sqlStr = conn.OLEDBConnection.CommandText
End If
'Create PivotCache
Dim pcache As pivotCache
Set pcache = ActiveWorkbook.PivotCaches.Create(xlExternal, conn)
'Then we need to get recordset to create pivot table
Dim adodb_conn As Object
Dim rs As Object
Set adodb_conn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
adodb_conn.Open connStr
rs.Open sqlStr, adodb_conn
Set pcache.Recordset = rs
'When CreatePivotTable method called the linked WorkbookConnection is losing connection string and command text
Set pvt = pcache.CreatePivotTable(TableDestination:=Sheets("MySheetName").Cells(1, 1), TableName:="MyPivotTableName")
rs.Close
adodb_conn.Close
'Restore CommandText and connection string
pcache.CommandText = sqlStr
pcache.Connection = connStr
' Now you have PivotTable that linked with yours WorkbookConnection
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.