前提是:
我有一个工作簿,里面有数据。其中一个选项卡在a-D列中有一个数据列表,在F3单元中有一个基于该列表的透视表。工作簿中的一个宏将
Copy
将该工作表(以及其他一些与问题无关的工作表)添加到新的工作簿中
ThisWorkbook.Worksheets(aTMP).Copy After:=wkb.Worksheets(wkb.Worksheets.Count)
,在哪里
aTMP
是包含工作表名称的数组。
不幸的是,这会使新工作簿中的数据透视表指向原始工作表/工作簿中的表-
.PivotCache.SourceData
指向正确的文件-这很容易”。天哪,我错了。。。
(包括
Debug.Print
我自己解决这个问题时添加的语句)
Debug.Print wkb.Worksheets(wsTableAndPivot.Name).PivotTables(1).PivotCache.SourceData
'This is "'Z:\FilePath\[WorkbookName]Calculate_PivotTable'!C1:C4"
Debug.Print wkb.Worksheets(wsTableAndPivot.Name).Columns("A:D").Address(True, True, xlR1C1, True)
'This is "[Book1]Calculate_PivotTable!C1:C4"
Debug.Print wkb.Worksheets(wsTableAndPivot.Name).PivotTables(1).PivotCache.SourceType
' This is 1
''''
wkb.Worksheets(wsTableAndPivot.Name).PivotTables(1).PivotCache.SourceData = _
wkb.Worksheets(wsTableAndPivot.Name).Columns("A:D").Address(True, True, xlR1C1, True)
'This is the line that throws an error
''''
Debug.Print "-----"
'The following values are after I MANUALLY intervene, as detailed in "The Error"
Debug.Print wkb.Worksheets(wsTableAndPivot.Name).PivotTables(1).PivotCache.SourceData
'This is "Calculate_PivotTable'!C1:C4"
Debug.Print wkb.Worksheets(wsTableAndPivot.Name).PivotTables(1).PivotCache.SourceType
' This is 1
错误:
错误号-1004
应用程序定义或对象定义错误
然而
手动
A1:D2
然后
(注意:据我所知,受保护的工作表可能会导致数据透视表出现问题,我已经检查过没有任何问题)