今天的题目好奇怪啊,呵呵,起因如下:

今天老婆在修改论文,她的老板提出一个非常**的要求——把Word中所有修订后的文字用特殊的字体(蓝色)标出来,然后再接受修订。我勒个去,明明有修订后的模式啊,为什么还要这么做,简直就是变态。我只能说,中国人的想法真TMD奇怪,每天都在做浪费时间的事情。

哎,老婆既然提出来了,作为一个程序员,怎能不满足老婆的各种无理要求呢?于是有了今天这篇小文章(和马伊琍没有关系哦~~~)

这种批量修改的问题一般来说有两种方案,一是看Word有没有提供相应的功能(主要是用样式),Google了一圈,发现没有。于是只能展开第二方案,也就是我们的老本行——编程。对于Word编程,其实笔者不是很熟悉,但是有一个基本的思路:

1.找到修订部分

2.更改格式

这不是纯属废话吗,其实也不尽然。虽然笔者自己不会VBA,但是Word自身确是会自己给自己写程序呢(这算不算元编程?),这个功能就是大名鼎鼎的“录制宏”,使用该功能后,就能看到VBA的脚本是如何编写的了吧。说干就干:

1)首先在工具栏上加载“审阅工具”,这一步主要是考虑之后录制的方便

Word技巧杂记(二)——批量修改修订格式并接受-LMLPHP

2)接下来录制宏:“工具->宏->录制新宏”,填好相应的参数(包括宏的名字啊,快捷键啊等等一系列内容)

Word技巧杂记(二)——批量修改修订格式并接受-LMLPHP

3)好了,此时千万不要做其他的操作了,点击“审阅工具”中的“后一处修订或批注”,待选中插入部分的字符后,修改字体颜色,最后接受修订

4)一气呵成之后,停止录宏

此时,打开刚才编辑好的宏(“工具->宏->宏”)

在“宏名”处搜索刚才录入的宏名,选中之后,点右侧的编辑

Word技巧杂记(二)——批量修改修订格式并接受-LMLPHP

就会打开录制好的程序了。

Sub Macro1()    WordBasic.NextChangeOrComment
Selection.Font.Color = wdColorBlue
Selection.Range.Revisions.AcceptAll
WordBasic.AcceptChangesSelected
End Sub

当笔者直接运行这段代码的时候,执行到最后一步总是报错。由于没时间仔细琢磨,而且这只是给老婆应急的,所以狠狠心,直接删掉了。这样一来就不在报错了,而且完全满足了老婆大人的需求。提交给老婆大人的最终代码如下:

Sub Macro1()
WordBasic.NextChangeOrComment
Selection.Font.Color = wdColorBlue
Selection.Range.Revisions.AcceptAll
End Sub

【后记】目前这个程序只能单步运行,无法批量搞定整篇文档的内容。我的想法是如果WordBasic.NextChangeOrComment能够返回一个boolean,那就能使用While循环来做了,可是事实上这个函数好像不返回,查找了半天,网上也没有一些说法。好在用户对这个程序已经非常满意了,不过还是在此留一个悬念吧,如果以后有机会再仔细研究。

04-28 16:43