【问题标题】:Pivot Table Source will not change Workbook in VBA?数据透视表源不会更改 VBA 中的工作簿?
【发布时间】:2018-10-16 12:17:34
【问题描述】:

好的,这已经困扰我几天了。希望有人能在某个地方发现一个愚蠢的错误?

前提:

我有一个工作簿,其中包含数据。其中一个选项卡在 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
应用程序定义或对象定义的错误

但是,如果我在引发错误的行上放置一个断点,手动将源数据更改为指向同一个工作簿(例如 Range A1:D2 ),然后然后运行该行,它可以正常工作并将源数据设置为整个列。

(注意,据我所知,受保护的工作表可能会导致数据透视表出现问题,我已经检查过没有任何问题)

【问题讨论】:

  • @FreeMan 创建一个新的 PivotCache 似乎已经成功了 - 我猜有某种基于原始工作簿的引用或锁定。非常感谢!

标签: excel vba pivot-table


【解决方案1】:

我遇到了类似的问题,并在 SO 上发布了相关信息。

你可以看看我想出的solution 是否适合你。

基本上,我根据工作表上的数据为每个数据透视表创建了一个新的数据透视缓存。可能不是最佳的,但这是我发现唯一有效的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2014-06-16
    • 2013-08-22
    相关资源
    最近更新 更多