更新:通过一些额外的测试,我发现:1)255 个字符似乎确实是断点(字符限制)。使用字符长度为 245 的数组设置过滤器效果很好——我能够保存并重新打开而没有任何错误。我向数组添加了另一个条件以使长度为 262,保存文件,然后得到相同的错误。2)removed records
消息中的工作表是指工作表index
,而不是工作表名称,它确实引用了具有自动过滤功能的工作表。结束更新
我的问题——我编写了代码来AutoFilter
根据几个切片器中的选定项目设置数据集。有时,当我打开文件时,我会收到错误(解释):Excel found unreadable content in the workbook. Do you want to repair the file?
然后会弹出一个对话框并说Removed Records: Sorting from /xl/worksheets/sheet2.xml part
.
代码按设计工作;数据集反映了切片器中选择的任何内容(甚至是许多选择)。
我将数组(字符串数组)设置如下,然后使用数组设置条件:
If sCache.Name = "Slicer_Test" Then
For Each sItem In ActiveWorkbook.SlicerCaches(sCache.Name).SlicerItems
If sItem.Selected = True Then
ReDim Preserve sArr(0 To sCount)
sArr(sCount) = sItem.Name
sCount = sCount + 1
End If
Next sItem
filterRng.AutoFilter Field:=9, Criteria1:=sArr, Operator:=xlFilterValues
ReDim sArr(0 To 0)
End If
我为每个切片器复制上述代码。
我认为问题源于三个最大的切片器分别包含 27、120 和 322 个项目。So as you can imagine, when all the items in the largest slicer are selected, the array's string length is over 5K characters long... like I mentioned above, the code works as designed. 我找到了这个线程,它提到了一个字符的最大值?
我已经尝试在保存/关闭工作簿之前删除过滤器,但这并不总是有效,并且该文件将被许多其他人使用。所以我想知道 1)是否有人建议解决此错误的方法,或者 2)是否有办法在不使用非常长的数组的情况下完成过滤......
对此的任何想法将不胜感激!