微软Office宏的一个bug 董亚谋 【摘 要】粗心的微软编程员竟然将宏操作中字体转换的话句写反了,使用录制宏进行格式转化和进行VBA鳊程的程序员要特别注意了.本文中笔者指出了错误所在语句,并给出了修改方法.%Microsoft programmers even carelessly write the statement of operation of font conversion macro against the use of recorded macros, and so the operator to format conversion and programmers in VBA should pay special attention to it. The author points the wrong sentences in macros, and provides the way to correct. 【期刊名称】《价值工程》 【年(卷),期】2011(030)027 【总页数】2页(P113-114) 【关键词】office 2003;宏;VBA编程;bug 【作 者】董亚谋 【作者单位】陕西邮电职业技术学院,咸阳712000 【正文语种】中 文 【中图分类】TP30 Office宏操作可以将操作记录下来,运行宏就可以快速的完成类似的操作。另外录制的宏代码在Office编程中应用非常方便。笔者在使用微软Office宏时发现了一个明显的bug。就是自动录制的转换字体格式的宏代码,竟然无法完成相应的功能。 仔细分析宏代码,笔者终于发现了问题所在。下面是使用Word自动录制的将选中文字由宋体转换为华文行楷的源代码。 原来OFFICE录制宏时,录制的宏代码将转换前后的字体弄颠倒了。注意我加了注释的两行语句,.NameFarEast=“华文行楷”和.Name=“宋体”,所以这段程序只能实现将选中文字由华文行楷转换为宋体。要修正也很容易只要就将后面的字体换过来就能实现由宋体转换为华文行楷了,也就是在宏源代码中手动修改为.NameFarEast=“宋体”和.Name=“华文行楷”。 下面以Word为例说明如何修改宏代码。宏录制完成后,单击菜单“工具”|“宏”|“宏”,弹出“宏”窗口,如图1所示。 单击右侧的“编辑”按钮,就会打开宏源代码窗口。如图2所示。 如果读者不想如何修改宏代码,还有一种方法,就是录制时字体也颠倒设置。比如需要录制将选中文字由宋体转换为华文行楷的宏,在录制前可以先将字体设置为华文行楷,选中文字录制宏,将华文行楷转换为宋体。由于代码是颠倒,这样就刚好实现了由宋体转换为华文行楷。 值得注意的是,对英文字体转换没有这个bug,Office 2003中文版及以前的中文版都有这个bug。虽然Office 2007和2010中文版没有了这个bug,但是宏也简略到了极点,只剩下了一条有用的语句:Selection.Font.Name="华文行楷"。对使用VBA编程的人还是更偏爱Office 2003,所以对这个bug也一定要注意。 参考文献: [1]董亚谋.计算机应用基础案例与实训.北京.中国铁道出版社,2009. [2]威利特.中文版Office2003宝典.北京.电子工业出版社,2005. 本文来源:https://www.wddqw.com/doc/50e433105bfb770bf78a6529647d27284b73378e.html