常规做法(非常规做法可以直接拉到文末,就一个字“快”)
因为我原始处理的文件有不能公开的数据,所以我单建了一个空表来演示,空表里添加了一些空白窗体,我原始文件使用代码方法和非常规做法两种方式都解决了问题,并且检查了数据没有丢失。
常规做法1、优点:操作简单;缺点:如果对象很多,会非常慢,我需要处理的文档因为长时间无响应,放弃这个做法了
打开文件,按F5,打开定位,选择“定位条件”
选择“对象”,确定。
之前隐藏的对象就显示出来了,按DEL键,删除,搞定收工。
常规做法2 优缺点跟第一个方法一样,我也在长时间的无响应之后放弃了
选择“页面布局”,选择“选择窗格”,再选择“全部显示”,这些窗格也都显示出来了,在右侧选择窗体名称,可以一个一个删除。也可以选择一个窗体名称后,CTRL + A全选,按DEL删除
常规做法3 优点:跟我的非常规做法比起来还是EXCEL内部操作,比较安全;缺点一个是慢,期间很长时间无响应,不过只要代码跑开了就等就好了,我是多个表都有问题,所以跑的第二个代码,成功解决问题了。
VBA解决,这个需要一点基础
a) 只有一个sheet有内容,很简单就一句代码
Sub main()
Activesheet.DrawingObjects.Delete
end sub
b) 需要删除所有工作表中的对象,也很简单,加个循环
Sub Test()
Dim Sht As Worksheet
For Each Sht In Sheets
Sht.DrawingObjects.Delete
Next
End Sub
简单说一下EXCEL 跑VBA代码
打开文件后,按Alt + F11,跳出VBA的调试界面,按F7打开代码窗口,粘贴代码进去,按F5跑代码就好了
重点来了,非常规做法,我是在跑代码的时候实在无聊,想到EXCEL2007之后版本的文件其实是一个压缩文件,就从文件结构想了一个歪招,事实证明可行,优点是无需打开出问题的EXCEL文档(出了问题的EXCEL文档打开就需要很久,非常的磨人),处理起来非常快!缺点是等于用外力拆解了原文件,存在未知风险,一定要备份再搞
把出问题的EXCEL文档备份一份,然后选定要修改的文件名按F2把文件扩展名“xlsx”改为zip,会提示“如果改变文件的扩展名,可能会导致文件不可用。确实要修改吗?”当然选确定
如果看不到文件扩展名可以打开资源管理器(win + E),点“查看”,点“选项”,在弹出的窗口选“查看”,下拉找到“隐藏已知文件类型的扩展名”取消勾选
然后右键 打开方式 选择“资源管理器”。重点!用资源管理器打开的好处是处理完不用再压缩了,解压处理完再压缩有可能操作失误连文件夹一起压缩,就会出问题
点开xl文件夹
看到这个“drawings”文件夹没?这个就是我们要解决的问题,直接右键删除,如果excel文档有图片这里还会有一个media文件夹,视情况删除
关闭资源管理器(直接返回上层目录的话资源管理器还工作在压缩文件的模式),再找到我们这个zip文件,按F2,把文件扩展名改回xlsx。打开工作簿,Excel提示我们“发现工作簿中的部分内容有问题……巴拉巴拉”选“是”
然后看到下面这个对话框,成功了!点“关闭”
恭喜你,搞定了,看,所有的窗格都已经删除了,记得保存文件哦