EXCEL文件过大常用处理方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EXCEL文件过大常用处理方法

【故障现象描述】

一个EXCEL表,在只有很少数据的情况下,文件达到几兆甚至几十兆,通过常用的删除行或者清除格式的方法无法缩小文件大小。

【故障原因分析】

造成上述原因的问题有很多种,从网上论坛中反馈的信息来看主要还是隐藏对象和空白单元格格式的问题。

对象的产生原因可能有以下几个。从网页上复制内容后直接粘贴到工作表中,而没有使用选择性粘贴。无意中使用绘图工具栏的直线工具或其他绘图工具,不知不觉中在工作表中插入了小的直线或其他图形对象,由于尺寸很小,于肉眼几乎无法看到。而后,又通过单元格的复制产生了大量的小绘图对象。在工作表中插入了图片或其他绘图对象,操作中又将其高度宽度设为0 或很小的值,通过复制产生了大量的对象。

在行或列的位置中插入了绘图对象,对象的属性为“大小位置随单元而变的(默认的)”,然后隐藏行或列,或设置行高或列宽为很小的值,从而使插入的对象不能看到。工作表中的对象设置了不可见属性(Visible=false),或对象的线条与填充色均设与背景色相同,使对象无法被看到。

【常用解决方法】

方法一:删除隐藏对象

(1)打开EXCEL表,“编辑”菜单,“定位”,或者通过CTRL+G快捷键,打开“定位”窗口,如下图所示:

(2)单击“定位条件”按钮,打开“定位选择”窗口,选择“对象”单选按钮,如下图所示:

(3)单击“确定”后会返回到文件,如果存在隐藏的对象,对象将处于选中状态,此时按下键盘上delete按键,即可删除所有选定的对象。

注意:EXCEL中图表、图片、插入的文件等都属于对象,在删除之前要加以判断。例如下图中有四个对象:一个图表、一个图片、2个隐藏的位图对象。

此时可以通过按住键盘上CTRL按键,单击取消选择有用的对象,如下图所示:

方法二:工作表中在较大的区域内设置了单元格格式或者条件格式,删除空白区域的单元格格

式或者条件格式。

例如下面的EXCEL文件,我对第一个单元格设置了单元格为数字百分比格式,然后将格式应用到下方3000个单元格内。此时,通过观察右侧的滚动条发现滑块很小。

解决这种问题的方法也很简单,例如我想删除A101至A3000的单元格格式,可以在“名称框”中输入A101:A3000,然后按回车键,此时A101至A3000的单元格都处于选中状态。单击“编辑”

菜单,“清除”,“格式”,然后保存文件即可。

注意:如果需要在一行或一列的很大范围设置统一的单元格格式,可以选择整行或整列设置单元格格式,而不要只选择行列的一部分单独设置格式。前者不会造成文件体积虚增的问题,而后者会增加文件体积。

【附件】

(1)用VBA 对工作簿中的对象进行计数,查看在每个工作表中实际存在的对象数量,如果此数量不合理,就说明有问题。按打开VBA 编辑器窗口,单击菜单“插入”→“模块”来插入一个新模块,默认情况下为“模块1”,然后在模块1 的代码窗口中输入以下代码:

Sub CountShapes()

Dim n As Double

Dim ws As Worksheet

Dim Content As String

For Each ws In Worksheets

n = ws.Shapes.Count

Content = Content & "工作表" & & " 有" & n & " 个对象" & vbCrLf

Next

MsgBox Content

End Sub

最后,按F5 键来运行这段代码,就能看到检查结果。

(2)使用宏在多个工作表中更加精确地删除这些无用对象。比如,可以根据需要只删除高度和宽度都小于14.25 磅(0.5 cm)的对象。

只删除活动工作表中特定大小的对象的代码为:

Sub DelShapes()

Dim sp As Shape, n

For Each sp In ActiveSheet.Shapes

If sp.Width < 14.25 And sp.Height < 14.25 Then

sp.Delete

n = n + 1

End If

Next sp

MsgBox "共删除了" & n & "个对象"

End Sub

(3)删除所有工作表中的特定大小的对象的代码为:

Sub DelAllShapes()

Dim ws As Worksheet

Dim sp As Shape

Dim n As Double

Dim Content As String

For Each ws In Worksheets

For Each sp In ws.Shapes

If sp.Width < 14.25 And sp.Height < 14.25 Then

sp.Delete

n = n + 1

End If

Next

Content = Content & "工作表" & & " 删除了" & n & " 个对象" & vbCrLf

n = 0

Next

MsgBox Content

End Sub

参考资料:

/news1/evaluation/2008/22/082211471644EDD673D2FH0CB0168G.html /viewthread.php?tid=430732&extra=&page=1

相关文档
最新文档