excel 运行时错误1004:数据透视表字段名称无效

anauzrmj  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(451)

我的代码是我尝试打开一个工作簿,然后基于标题为“数据”的选项卡上的数据范围创建一个透视表。

Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTBookY As PivotTable
Dim PRange As Range
Dim lastRow As Long
Dim LastCol As Long

Application.ScreenUpdating = False

Set UKBook = _
  Workbooks.Open _
  ("File Path")

Worksheets("Data").Visible = True

Sheets.Add
ActiveSheet.Name = "B22"

Set PSheet = ActiveWorkbook.Worksheets("B22")
Set DSheet = ActiveWorkbook.Worksheets("Data")

'Define Data Range
lastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(lastRow, LastCol)

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange.Address)

'Insert Blank Pivot Table
Set PTBookY = PSheet.PivotTables.Add(PivotCache:=PCache, TableDestination:=PSheet.Range("A1"), TableName:="PTBookY")

我还有其他代码来输入透视表的行/列/值,但我不认为这是相关的。
我总是收到
运行时错误1004:数据透视表字段名称无效”
插入空白数据透视表时。
我注意到,如果我打开工作簿并在“数据”选项卡上,代码将更一致地通过。
数据区域的每一列都有标题,文件路径和工作表名称正确。

zpqajqem

zpqajqem1#

你真的不应该依赖ActiveWorkbook。如果你使用UKBook,那么指定它。

Worksheets("Data").Visible = True

Sheets.Add
ActiveSheet.Name = "B22"

Set PSheet = ActiveWorkbook.Worksheets("B22")
Set DSheet = ActiveWorkbook.Worksheets("Data")

...

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange.Address)

UKBook.Worksheets("Data").Visible = True

Set PSheet = UKBook.Sheets.Add()
PSheet.Name = "B22"
Set DSheet = UKBook.Worksheets("Data")

...

'Define Pivot Cache
Set PCache = UKBook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange.Address)

相关问题