VBA:使用长字符创建数据透视表

时间:2018-01-04 14:22:37

标签: vba excel-vba pivot-table excel

我正在尝试使用以下代码创建一个简单的数据透视表:

Dim rngA As Range
Dim rngB As Range
Set rngA = Sheets("Sheet1").Range("C4:G10")
Set rngB = Sheets("Sheet2").Range("Q2")

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngA, Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:=rngB, TableName:="My_Pivot_Table", DefaultVersion:=xlPivotTableVersion14

我的数据包含非常长的文本行(最多900个字符),=>这就是我的VBA代码无法创建表的原因。使用较短的文本或使用宏录制器,它可以正常工作。

我收到两个不同的错误:

  
      
  1. 如果我为“.Add”交换“.Create”,我会在最后一行代码中的“Version”一词中得到:“编译错误:找不到命名参数”。

  2.   
  3. 使用.create我得到“type Mismatch”,

  4.   

它似乎与我在Stackoverflow上找到的其他问题不同。

知道怎么解决吗?

编辑: 如果我交换

,该准则有效
SourceData:=rngA   

SourceData:="Sheet1!R4C3:R10C7"

1 个答案:

答案 0 :(得分:0)

PivotCaches.Add不会将Version作为参数

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.pivotcaches.add.aspx

因此,如果你删除它,你将留下:(编译)

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, 
SourceData:=rngA).CreatePivotTable TableDestination:=rngB, 
TableName:="My_Pivot_Table", DefaultVersion:=xlPivotTableVersion14

但是,我认为正确的代码更像是这样:

Dim rngA As Range
Dim rngB As Range

Set rngA = Sheets("Sheet1").Range("G4:G10")
Set rngB = Sheets("Sheet2").Range("Q2")

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngA, 
                 Version:=6).CreatePivotTable TableDestination:= rngB, 
                     TableName:="My_Table", DefaultVersion:=6