删除Excel文件中隐藏对象的三种方法(第三种最快)

删除Excel文件中隐藏对象的三种方法(第三种最快)

收到一个excel文件,总计1000行4列文字,文件大小却有412k。上下滚动没有异常,但是一旦涉及复制或排序就会变得十分缓慢,进程显示占用900多兆内存。放大后仔细观察,发现里面隐藏着很多图片、文本框之类的形状,使用VBA检查,debug.print sheet1.shapes.count,显示有40526个shape。这些形状都没有尺寸,选中一个并拖拽后发现是一些图片之类的东西,如下图显示:

一开始使用‘Ctrl+G’定位到‘对象’后删除,excel文件会失去响应,然后崩溃。即使只选择其中一个,也不能删除。真是奇哉怪哉。摸索了半天,最终解决了问题,总结三种删除方法如下:

1 采用VBA并结合对象组合法

Sub clearShape()

On Error Resume Next

Dim shp As Shape

For Each shp In Sheet1.Shapes

shp.Delete

Next

End Sub

执行完毕后在立即窗口‘?sheet1.Shapes.Count’,发现还有388个shape没有删除。这时采用‘Ctrl+G’定位到‘对象’后点delete仍是删除不了的,需要鼠标右键选择组合,将它们组合成一个对象,然后点击delete才能删除。

2 改后缀名法

将excel文件的后缀名由xlsx改为rar(改成zip后尝试失败),然后用winrar打开压缩吧,删除其中xl文件夹下的“drawings”和“ink”文件夹,然后关闭winrar,再将rar文件的后缀名改回xlsx,用Excel打开会提示“部分内容有错误尝试修复”,选是,所有的图片都被删除了。如下图:

3 另存为法(强烈推荐)

将xlsx文件另存为CSV格式文件,用Excel打开后再另存为xlsx文件,图片全部删除,问题解决。

相关文章