当前位置: 首页 > 图文教程 > 工具软件 > 办公软件 > Excel工作薄瘦身秘技

办公软件
PowerPoint文档中的数据图表动起来
Excel中将文本转换为数字的七种方法
Word邮件合并实例:批量制作有照片的工作证
把常用图片请入WPS 2007工具栏以便插入
Word 2007里就能算算式 内置工具使用更方便
妙用word 设置书籍装订式双面打印
在PowerPoint 2007里把PPT文档批量转为PDF
三招教你提升Word 2007单元格容量
为WPS表格指定填充范围
Excel表格页码设置挺简单 打印输出更直观
WPS 2007中打造镂空文字特效
Excel电子表格文本换行技巧总结
PowerPoint 2007双显示输出技巧
巧用名称框选择过宽的Excel单元格区域
Word共用模板或加载项程序的加载、卸载
组件对象模型(COM)加载项程序的加载或卸载
Word 2007插入半圆技巧
Word 2007中为字符添加上划线
在没装PowerPoint的电脑上照样播放幻灯片
Word 2007批注修改技巧

办公软件 中的 Excel工作薄瘦身秘技


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 145 ::
收藏到网摘: n/a

  很多用户都遇到过Excel 文件在使用过程中不断增肥,反应越来越迟钝的现象,甚至发生文件损坏而丢失重要数据的可怕事件。如果是因为有大量数据的输入,那么文件体积增加也无可非议,此时应该通过优化表结构、把数据分散保存到多个工作簿文件的方法来减小单个文件的体积。然而,在很多时候,这些拥有“臃肿”身材的工作簿文件里面只有少量的数据,那么,它是怎么“肥”起来的呢?

  本技巧中会罗列一些常见的Excel 文件体积虚增的原因及处理办法。

  1 工作表中存在大量的细小图形对象

  工作表中如果存在大量的细小图形对象,那么文件体积就可能在用户毫不知情的情况下暴增,这是一种很常见的“Excel 肥胖症”。可以使用下面两种方法来检查Excel 工作表是否存在这种症状。

  (1)在工作表中按键调出“定位”对话框,单击“定位条件”按钮,在“定位条件”对话框中选择“对象”项,单击“确定”,如图1 所示。然后观察工作表上是否会显示很多被选定的对象。

使用定位功能查找对象

  如果工作簿中包含多个工作表,需要在每个工作表中用这种方法进行查找。关于“定位”功能的更多技巧,请参阅技巧28。

  注意:隐藏列或行中的对象利用这种方法无法被看到。

  (2)用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 & "工作表" & ws.Name & " 有" & n & " 个对象" & vbCrLf
  Next
  MsgBox Content
  End Sub

  最后,按F5 键来运行这段代码,就能看到检查结果。在看似空白的工作表中,存在着大量的图形对象,如图2 所示。

使用VBA检测工作表中的对象数量

  误设单元格格式或者条件格式

  如果确认在工作表中存在大量的对象,而用户并不需要它们,可以用两种方法来处理:

  (1)刚才的定位方法中,当对象全部处于被选择状态时按键删除它们即可。

  (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

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

  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 & "工作表" & ws.Name & " 删除了" & n & " 个对象" & vbCrLf
  n = 0
  Next
  MsgBox Content
  End Sub

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

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

  2 工作表中在较大的区域内设置了单元格格式或者条件格式

  仔细观察工作表滚动条,如果滑标很小,且拖动滑标向下到底,可以到达很大的行号或列标,可是工作表中实际使用到的区域很小,如图3 所示。这就说明,有相当大一块区域可能被设置了单元格格式或者条件格式,这些并没有被用到的单元格,能对文件体积产生很大的影响。

  解决办法如下。单击到真正需要的行号的下一行,按组合键,选择所有的多余行(也可以在名称框中输入行号如2000∶65536),单击菜单“编辑”→“清除→“格式”(或全部)。同理,也可以清除多余列的格式。

  有时,用户确实需要为工作表中空白的区域预设格式,以备将来增加数据之用,但一定要使用正确的方法,否则就会造成大量用不到的区域被预设了格式,徒增文件体积。

  如果需要在一行或一列的很大范围设置统一的单元格格式,可以选择整行或整列设置单元格格式,而不要只选择行列的一部分单独设置格式。前者不会造成文件体积虚增的问题,而后者会增加文件体积。试验一下在两个Excel 文件里面分别对A1∶A65536 设置单元格格式和对A∶A 设置单元格格式,目的都是为A 列设置格式,但最终文件的体积相差100 倍以上。