今天的題目好奇怪啊,呵呵,起因如下:
今天老婆在修改論文,她的老板提出一個非常**的要求——把Word中所有修訂后的文字用特殊的字體(藍色)標出來,然后再接受修訂。我勒個去,明明有修訂后的模式啊,為什么還要這么做,簡直就是變態。我只能說,中國人的想法真TMD奇怪,每天都在做浪費時間的事情。
哎,老婆既然提出來了,作為一個程序員,怎能不滿足老婆的各種無理要求呢?於是有了今天這篇小文章(和馬伊琍沒有關系哦~~~)
這種批量修改的問題一般來說有兩種方案,一是看Word有沒有提供相應的功能(主要是用樣式),Google了一圈,發現沒有。於是只能展開第二方案,也就是我們的老本行——編程。對於Word編程,其實筆者不是很熟悉,但是有一個基本的思路:
1.找到修訂部分
2.更改格式
這不是純屬廢話嗎,其實也不盡然。雖然筆者自己不會VBA,但是Word自身確是會自己給自己寫程序呢(這算不算元編程?),這個功能就是大名鼎鼎的“錄制宏”,使用該功能后,就能看到VBA的腳本是如何編寫的了吧。說干就干:
1)首先在工具欄上加載“審閱工具”,這一步主要是考慮之后錄制的方便
2)接下來錄制宏:“工具->宏->錄制新宏”,填好相應的參數(包括宏的名字啊,快捷鍵啊等等一系列內容)
3)好了,此時千萬不要做其他的操作了,點擊“審閱工具”中的“后一處修訂或批注”,待選中插入部分的字符后,修改字體顏色,最后接受修訂
4)一氣呵成之后,停止錄宏
此時,打開剛才編輯好的宏(“工具->宏->宏”)
在“宏名”處搜索剛才錄入的宏名,選中之后,點右側的編輯
就會打開錄制好的程序了。
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循環來做了,可是事實上這個函數好像不返回,查找了半天,網上也沒有一些說法。好在用戶對這個程序已經非常滿意了,不過還是在此留一個懸念吧,如果以后有機會再仔細研究。