Excel 错误:已删除记录:从 /xl/worksheets/sheet10.xml 部分排序

16

我几乎确定我需要创建一个新的Excel文件,但也许在这里我可以得到一些关于问题源头的想法。

我的Excel文件不断出现以下错误:

Excel在'filename.xlsm'中发现无法读取的内容。您是否要恢复此工作簿的内容?如果您信任此工作簿的源,请单击“是”。

所以我点击“是”。文件会打开并显示为已修复状态:

已删除记录:从/xl/worksheets/sheet10.xml部分进行排序。

问题在于我甚至没有10号工作表

这是一个包含自定义对象的大型Excel文件。但我没有数据库连接或自动筛选器,因此无法与AutoFilter Criteria Using Array (Error) - Too Large String?xlsx error: "Removed Records: Named range from /xl/workbook.xml part" when tried to resolve errors相关联。

有人知道发生了什么吗?

谢谢!


2
内部,Excel 将工作表存储为 XML 文件 - 按升序编号。因此,sheet10.xml 将对应另一个工作表。将文件重命名为 .zip 并检查结构。在 xl\workbook.xml 中,您应该找到匹配的工作表... - Peter Albert
@PeterAlbert。我确定这是一个显而易见的事情,但是我迷失了:-)。我重命名后得到了filename.zip.xlsm,这可能不是你想要的。 - user2491612
1
你需要更改Windows资源管理器的设置,以便也显示文件扩展名 - 然后将.xlsm重命名为.zip! - Peter Albert
我曾经因为使用FreezePanes而遇到了这个问题。将那行代码注释掉解决了这个问题。Excel 2007,EPPlus。 - B. Clay Shannon-B. Crow Raven
8个回答

43

在保存工作簿之前,尝试清除排序。当我遇到这种情况时,我的工作表引用混乱了,因此排序未被清除。

Sheets(yoursheetname).Sort.SortFields.Clear

4
+1 这是一个非常简单但有用的解决方案。谢谢。 - Reverend_Dude
5
我认为这真正地回答了这个问题! - zephyr
8
这应该被接受为这个问题的答案! - bo-oz
我欠你一杯你喜欢的饮料! - Daniel Widdis
同意这应该是被接受的答案 - 我带着一个与用户工作簿表现相同的 .xlsb 文件来到这里,因此更改文件类型或探索 .xml 文件对我没有用。这解决了问题。 - jackelsey
显示剩余2条评论

13

很抱歉,我无法解释正在发生什么,但我曾多次遇到类似的情况——总是与XLSM文件有关。在最近的一次案例中,我们了解到,当定义为工作表范围名称时(我们认为这样使用是安全的),Excel不喜欢重复使用相同的范围名称。

我们的故障排除路径如下:

  • 尝试将文件另存为XLSB(二进制宏文件),然后使用XLSB文件或将其保存回XLSM
  • 检查文件历史记录(我们始终保留每日快照),找出问题最早出现的时间;使用之前的版本并移植您的更改
  • 提取代码(通过SVN代码),创建一个新的工作簿并将代码导入回去

通常步骤1可以解决问题,但步骤3从未让我们失望。


出于好奇:您是如何在第三步中提取代码的?这是一个手动过程吗? - Peter Albert
1
非常正确。我们使用SVN Excel客户端从模块和工作表中提取代码。一旦创建了新的工作簿,就会导入模块并复制工作簿代码。当然,您需要手动创建工作表并复制所有格式和命名范围。这不是很好的过程。 - Juliusz
@Juliusz。第一步解决了问题,而且没有再出现! - user2491612
请务必查看下面@Chris的答案! - bo-oz

5

太棒了!

这个问题让我非常苦恼!

似乎将文件保存为xlsb(二进制)格式,并添加清除排序字段的操作,似乎解决了我的问题。

我在BeforeClose子程序中添加了以下代码,它似乎可以快速清除字段,更改我的仪表盘并提示保存。

xlsb文件的大小减小了超过1MB,加载速度似乎更快了!

感谢你的指导和支持!

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Sht As Worksheet
' Clear all Sort Fields prior to Save & Exit
For Each Sht In Application.Worksheets
    Sht.Sort.SortFields.Clear
Next Sht

aa1_Dashboard1.Select
aa1_Dashboard1.Activate

End Sub

1
你的帖子是我的救星,谢谢你,谢谢! - Ammadeux

2
我想就清除电子表格中排序字段的问题发表自己的确认,正如Chris最初建议的那样。我特别是在使用VBA宏进行列排序后出现错误,因此我推断问题必须与列/字段排序有关。确实如此。 在排序命令之后添加以下行:Sheets(yoursheetname).Sort.SortFields.Clear,使排序后的列保持排序(在我的情况下),但清除了下次打开文件时导致“从/xl/worksheets/sheet10.xml部分排序”的任何内容。 非常感谢您的支持。

0

我按照Chris上面提到的做了。在你的电子表格中清除排序字段。

Sheets(yoursheetname).Sort.SortFields.Clear

另外,将文件保存为 *.xlsb 格式。 这样应该就可以正常工作了。


0

我不知道这是否能帮助任何人,但它解决了我的问题。我有一个 Excel 表格,没有什么复杂的东西,只是一些联系人,Excel 2010 在 Win7 上非常常用的文件。今天我正在使用“筛选器”来选择特定的组,以便将目标内容发送电子邮件。在选择并复制粘贴到 Outlook 的过程中,文档出现了一个弹出窗口,好像我要安装什么东西,然后是“安装程序”,我都取消了。文档关闭了,然后在尝试重新打开时,我收到了错误消息。如果我选择“是”进行修复,我只得到了我的筛选列表的子集,大约是我 350 条记录中的 40 条,其余的数据全部丢失。我进行了谷歌搜索并尝试了不同的方法,包括在 Google Docs 和 Google Sheets 中打开,但都无济于事。我从未“保存”修复版本,因为我的旧数据不在其中。就在刚才,我右键单击资源管理器中的文档,选择“恢复以前的版本”,然后跳转到昨天的版本——幸运的是,自那以后没有添加任何内容。打开那个版本,哎呀,所有数据都在里面,而且打开速度很快。我知道是筛选器损坏了它,所以下次使用时要小心。我不知道为什么它不喜欢筛选器,但经过四个小时的努力,现在我可以冷静下来放松了!希望这对某人有所帮助。


0

我也遇到了这个问题。我有一个包含多个选项卡(大约30个选项卡)的电子表格,并在SharedPoint上共享,每个工作表都有筛选器。错误是未启用SharePoint上文件的编辑。我删除了每个工作表上的筛选器,然后重新上传到SharePoint,问题就解决了!


0
当你收到一条消息告诉你Excel找到了无法读取的内容...只需点击“打开”,然后关闭您接收到的所有后续消息。 - 在VBE中打开显示Addin名称或.xlsm的项目。单击工作簿的任何模块中的任意位置,就像要编辑宏文本一样,然后点击保存,选择工作簿类型(如Addin),选择要保存的文件夹,给它一个新名称,然后点击“保存”。这就是您需要做的全部,您创建的新文件将会正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接