【发布时间】:2018-06-05 14:03:05
【问题描述】:
我有一个通过 PowerPivot 连接到数据模型的工作簿,生成的数据透视表根据通过差异过程收集的给定数组进行过滤。
Sub AccrualPivot()
'Filter the data for the accrual entries that have been made.
Dim myArray() As Variant
Dim myR As Range
Sheets("Tables").Activate
Sheets("Tables").Range("JournalNum1").Select
Set myR = Sheets("Tables").Range("JournalNum1")
ReDim myArray(0 To myR.Cells.Count - 1)
Sheets("Data").Select
ActiveSheet.PivotTables("AccrualPivot").PivotFields( _
"[Query].[DataEntry].[DataEntry]").ClearAllFilters
ActiveSheet.PivotTables("AccrualPivot").PivotFields( _
"[Query].[JournalNum].[JournalNum]").ClearAllFilters
For i = 0 To myR.Cells.Count - 1
myArray(i) = "[Query].[JournalNum].&[" & myR.Cells(i + 1).Value & "]"
Next i
'ERROR THROWS HERE
ActiveSheet.PivotTables("AccrualPivot").PivotFields( _
"[Query].[JournalNum].[JournalNum]").VisibleItemsList = myArray
'This filters out the Data entries, which need to be included in a separate pivot.
ActiveSheet.PivotTables("AccrualPivot").PivotFields( _
"[Query].[DataEntry].[DataEntry]").CurrentPageName = _
"[Query].[DataEntry].&[0]"
End Sub
指示行的错误:
运行时错误“1004”:在 OLAP 多维数据集中找不到该项目。
当我在这一行上加注时,两个表达式都是 Variants 并且 myArray 已经填充了必要的信息。踢球者(我假设是根)是 这在我的原始文件中有效。但我需要能够“另存为”工作簿才能在每个月滚动。
我需要一个 4.30、5.31 等的文件。如果我将工作簿保存为下个月,更改日期并运行所有内容,它就可以工作。但如果我关闭该文件,重新打开并尝试运行,我会收到 1004 错误。
模块中没有任何地方引用文件名或文件路径。它们甚至保存在相同的路径中,就像单独的月份一样,并且所有工作表的名称都相同。我假设它嵌入在我找不到的某个地方。
【问题讨论】:
-
尝试使用工作表变量而不是 ActiveSheet。
-
我也有这个问题。链接到 OLAP 多维数据集时,Excel 似乎存在一些错误。它似乎无法以编程方式可靠地设置 CurrentPageName。这很奇怪,因为当您将字段的过滤器放入数据透视表时,它必须运行相同的代码。解决莎拉的运气好吗?
标签: excel vba excel-2013 powerpivot