Méthode PivotCache.CreatePivotTable (Excel)
Crée un rapport de tableau croisé dynamique basé sur un objet PivotCache . Elle renvoie un objet PivotTable.
Syntaxe
expression. CreatePivotTable (TableDestination, TableName, ReadData, DefaultVersion)
Expression Variable qui représente un objet PivotCache .
Parameters
Nom | Requis/Facultatif | Type de données | Description |
---|---|---|---|
TableDestination | Obligatoire | Variant | Cellule située dans le coin supérieur gauche de la plage de destination du rapport de tableau croisé dynamique (plage de la feuille de calcul où le rapport de tableau croisé dynamique obtenu sera placé). La plage de destination doit se trouver dans une feuille de calcul du classeur qui contient l’objet PivotCache spécifié par expression. |
TableName | Facultatif | Variante | Nom du nouveau rapport de tableau croisé dynamique. |
ReadData | Facultatif | Variant | True pour créer un cache de tableau croisé dynamique qui contient tous les enregistrements de la base de données externe ; ce cache peut être très volumineux. False pour autoriser la définition de certains champs en tant que champs de page reposant sur un serveur avant que les données soient effectivement lues. |
DefaultVersion | Facultatif | Variante | Version par défaut du rapport de tableau croisé dynamique. |
Valeur renvoyée
Tableau croisé dynamique
Remarques
Pour obtenir une autre façon de créer un rapport de tableau croisé dynamique basé sur un cache de tableau croisé dynamique, consultez la méthode Add de l’objet PivotTables .
Exemple
Cet exemple crée un cache de tableau croisé dynamique basé sur un fournisseur OLAP, puis crée un rapport de tableau croisé dynamique basé sur le cache à la cellule A3 de la feuille de calcul active.
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
Cet exemple crée un cache de tableau croisé dynamique à l’aide d’une connexion ADO à Microsoft Jet, puis crée un rapport de tableau croisé dynamique basé sur le cache de la cellule A3 de la feuille de calcul active.
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
Cet exemple utilise workbookConnection déjà existant.
'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
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.