EXCEL中单元格的样式故障疑难解析
2017-03-17刘培元
刘培元
摘要:探讨excel电子表格复制失败的原因。反复试验,探究真相:单元格样式过多造成电子表格无法复制。运用宏的方法删除过多的样式,排除故障。
关键词: excel;单元格样式;删除;复制
中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)32-0243-02
笔者原来使用的是excel2003,由于工作需要,常常在不同的excel文件之间复制粘贴数据。后来,office2003办公系统升级到office2007。基于软件产品均有向后兼容的特点,我们能够使用excel2007办公软件打开excel2003格式的文件。
在使用现有的EXCEL2007办公软件编辑原有的excel2003格式的文件时,会有复制失败的情况发生,令人困惑。
1 什么是单元格样式
单元格样式是excel中一组已定义的格式特性组合。比如字体、字号、数字格式、单元格边框以及单元格底纹,等等。
这些格式特性组合可以使用可锁定单元格的单元格样式,防止其他人对特定单元格进行更改。Office Excel 2007 包含若干内置单元格样式,可以应用或修改这些样式。还可以修改或重制单元格样式以创建自己的自定义单元格样式。
2 单元格样式的使用
单元格样式是基于整个工作簿的文档主题的应用。当您切换到另一主题时,excel2007将自动对单元格样式进行更新以匹配新主题。
实际上,我们可以把单元格样式理解为“预先定制”的格式集合,在应用这个样式时,相当于“批处理” 预先定制的格式集合。从而达到统一,高效,快捷地排版的目的。
3 出现故障的原因
为什么用户在使用excel2007打开excel2003文件时,会出现提示:“不同的单元格格式太多”,粘贴失败。见图1:不同的单元格格式太多。
图1 不同的单元格格式太多
我们通过故障再现,反复试验,终于发现,用户在不同的excel文件间复制粘贴数据时,单元格样式也一起复制了。这就会导致excel文件的样式一直在增加,当达到一定程度时,excel不能保存更多的样式,那么复制就会失败。总之:无效样式过多,就产生了这种复制失败的现象。
4 修复故障
思路:测试本工作薄中有多少个样式,分别是哪些样式,然后删除没有使用价值的样式。
1)显示工作薄中的单元格样式数量
Sub 使用宏显示活动工作薄中单元格样式的数量()
dim a
a=activeworkbook.styles.count '活动工作薄中共有多少个样式
msgbox(a) '以对话框的形式显示样式个数
End Sub
运行结果见图2:单元格样式的数量
图2 单元格样式的数量
2)查看活动工作薄中有哪些样式。
方法一:利用菜单栏。单击"开始"—"单元格样式",在弹出的列表框中列出该活动工作薄中全部的单元格样式。见图3:单元格样式列表。
图3 单元格样式列表
方法二:使用宏。将活动工作薄中的样式输出到d:\allstyles.txt文本文件中,然后打开该文本文件任意查看这些样式。
操作步骤:第1步:单击"开发工具"—"宏",在宏名文本框中输入新创建的宏的名称:“显示所有宏名”,单击“新建”按钮。见图4:宏对话框。
图4 宏对话框
第2步:在弹出的窗口中输入代码。
Sub 显示所有宏名()
Dim k, i
Open "d:\allstyles.txt" For Output As #1
k = ActiveWorkbook.Styles.Count
For i = 1 To k Step 1
Print #1, ActiveWorkbook.Styles(i).Name
Next i
End Sub
第3步:单击“保存”按钮,然后执行。这样本活动工作薄中的所有样式均输出到d:\allstyles.txt文本文件中了。我們可以打开d:\allstyles.txt文件,仔细查看这些样式。
3)删除样式。通常情况下,保留normal,删除其他样式。
方法一:一个个地删除。
操作步骤:第1步:单击“开始”菜单—“单元格样式”按钮下方的三角形,弹出单元格样式对话框。见图5:单元格样式。
图5 单元格样式
第3步:右击某个样式,在弹出的快捷菜单中,选择删除。
重复以上步骤,删除没有使用价值的样式。在实际操作中,往往由于工作簿中的自定义单元格样式非常多,手动逐一操作显得不太可能。
方法二:使用宏
操作步骤:第1步:按Alt+F8,弹出“宏”对话框,在宏名文本框中,输入宏名:“使用宏批量删除所有非normal的样式”,单击“创建”按钮。见图6:宏窗口。
图6 宏窗口
第2步:输入代码。
Sub 使用宏批量删除所有非normal的样式()
dim a,i
EX:
a=activeworkbook.styles.count
msgbox(a)
For i = 1 To activeworkbook.styles.count
On Error Resume Next
if ActiveWorkbook.Styles(i).name <>"normal" then ActiveWorkbook.Styles(i).Delete
Next i
If ActiveWorkbook.Styles.Count > 2 Then GoTo EX
End Sub
第3步:单击“保存”按钮,然后执行。这样本活动工作薄中的仅保留normal样式,其他样式均已经删除了。
5 拓展应用
故障描述:在使用excel2007打开excel2003格式的文件时,修改字体、字号等等格式,然后保存,再打开,发现还是原样,也就是说格式保存不了。
故障原因:单元格样式过多。
修复故障:同上,即删除该文件中多余的单元格样式,就可以保存单元格样式啦。
参考文献:
[1] Excel Home.Excel 2010应用大全[M].人民邮电出版社,2011:166-176.
[2] 罗刚君.Excel VBA程序开发自学宝典[M].3版.电子工业出版社,2014:5-25.