首页 > 解决方案 > 错误 1004 - 文件复制/名称更改后在 OLAP 多维数据集中找不到项目

问题描述

我有一个通过 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 多维数据集中找不到该项目。

当我在这条线上看时,两个表达式都是 V​​ariants 并且 myArray 已经填充了必要的信息。踢球者(我假设是根)是这在我的原始文件中有效。但我需要能够将每个月的工作簿另存为滚动。

我需要一个 4.30、5.31 等的文件。如果我将工作簿保存为下个月,更改日期并运行所有内容,它就可以工作。但是,如果我关闭该文件,重新打开并尝试运行,则会收到 1004 错误。

在模块中没有任何地方引用文件名或文件路径。它们甚至保存在相同的路径中,就像单独的月份一样,并且所有工作表的名称都相同。我假设它嵌入在我找不到的某个地方。

标签: excelvbaexcel-2013powerpivot

解决方案


我最近遇到了这个错误,发现Delora Bradish很有帮助:重建数据模型并再次运行代码。

powerquery 数据模型很脆弱,重命名表时会产生不可预知的后果。此外,如果您正在编写模型构建脚本,那么添加表格的顺序很重要;尽管可以同时添加表(多核处理),并且通常工作得很好,但有时生成的模型会在某处丢失表引用,并且您会收到此错误。更改加载顺序以确保大文件的良好分离。

如果您使用的是 powerquery,您应该不时有一个干净重建数据模型的计划。


推荐阅读