我正在玩这一小段代码。
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Personnel&Facilities Detail!R3C1:R105279C21", Version:=xlPivotTableVersion14 _
).CreatePivotTable TableDestination:="Corporate Communications!R1C1", _
TableName:="PivotTable9", DefaultVersion:=xlPivotTableVersion14
我正在尝试遍历一系列单元格,并根据我拥有的一些数据集创建一组枢轴。我的循环工作正常,我录制了一个应该做我想要的宏。我无法弄清楚的是数据透视表的命名约定。每次打开宏记录器并单击事件序列时,它似乎增加1。我很确定问题在这里:
表名:= “PivotTable9”
我试图清除数据透视表的缓存以重置表名,但这不起作用。
知道这里有什么问题吗?
答案 0 :(得分:1)
您正在寻找的过程是分别建立PivotTable
的每个部分。它可以更容易地跟踪问题和错误。下面的代码示例演示了如何设置公共PivotCache
,然后从该单个公共缓存中创建一些PivotTables
。
此示例中缺少许多内容,例如检查具有相同名称的工作表,可以创建的枢轴数的上限和下限,以及向每个表添加字段。
Option Explicit
Sub test()
Dim dataArea As Range
'Set dataArea = ThisWorkbook.Sheets("Personnel&Facilities Detail").Range("A3:U105279")
Set dataArea = ThisWorkbook.Sheets("RawData").Range("A1:L250")
CreateAllPivots dataArea, 5
End Sub
Sub CreateAllPivots(ByRef dataArea As Range, ByVal numPivots As Integer)
'--- given an input range and the number of Pivot Tables to create,
' this sub creates a single, common Pivot Cache and then new
' Pivot Tables (each on its own worksheet)
'--- perform any parameter checks, such as numPivots > 0
'--- create the common pivot cache for all tables
Dim ptWB As Workbook
Dim ptCache As PivotCache
Set ptWB = ThisWorkbook
Set ptCache = ptWB.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=dataArea, _
Version:=xlPivotTableVersion14)
'--- define the base name of the PT worksheets
Dim ptName As String
Dim ptSheetName As String
ptName = "CorpCommPT"
ptSheetName = "Corp Communications - "
'--- set up all the pivot tables
Dim i As Integer
Dim ptSheet As Worksheet
Dim newPTName As String
Dim thisPivot As PivotTable
For i = 1 To numPivots
Set ptSheet = ptWB.Sheets.Add
ptSheet.Name = ptSheetName & i
newPTName = ptName & i
Set thisPivot = ptCache.CreatePivotTable(TableDestination:=ptSheet.Range("A1"), _
TableName:=newPTName, _
DefaultVersion:=xlPivotTableVersion14)
'--- potentially set up the pivot fields for the new table here
Next i
End Sub