Word VBA:結(jié)合網(wǎng)友的自定義函數(shù)對漢字批量增 / 刪拼音
一、已有方法
1.Word中有對漢字加拼音的方法——拼音指南

通過這種方法手動加拼音是有字符串長度的限制的,因此很多網(wǎng)友基于此也寫過VBA自動化批量添加拼音的方法。

2.常規(guī)方法的不足——耗時太長
此文法當(dāng)然可用,存在的不足也非常明顯,因為需要用sendkeys方法,模擬鍵盤操作,所以非常耗時。
我們對下面這段測試文本,用此方法加拼音,來測試一下耗時情況:
視頻提供了功能強大的方法幫助您證明您的觀點。當(dāng)您單擊聯(lián)機視頻時,可以在想要添加的視頻的嵌入代碼中進行粘貼。您也可以鍵入一個關(guān)鍵字以聯(lián)機搜索最適合您的文檔的視頻。

可以看到耗時25.305秒。這個代碼是非常耗時的,一頁通用A4紙至少有這段文字的4-5倍多,也就是說,完成一頁漢字加拼音,至少是100-125秒。那么對于多頁甚至多份文檔來說,此方法速度可能就不能滿足我們的需求了。
除此之外,此方法很難設(shè)置拼音的對齊方式、字體、字號、位置等各項參數(shù),基本只能使用默認(rèn)值。
二、新的思路
1.思路
可以運用漢字與拼音的映射關(guān)系,自己寫一個函數(shù),然后對我們要處理的漢字可以立刻找到對應(yīng)的拼音。然后用Word VBA中的拼音指南方法Range.PhoneticGuide方法進行加拼音。
這種方法不用模擬鍵盤,每個漢字發(fā)送一次,所以運行速度上有非常大的提升。
因為具體的方法中又有多種方法(后面代碼中舉例了2種,可見詳情),那么我們同樣用前面測試的文字進行一下測試:
(1)調(diào)用函數(shù)但未用正則

耗時約0.188-0.19秒,速度快了許多。
(2)調(diào)用函數(shù)且用正則方法

耗時約0.156秒,速度更快。
可以看到用新的自定義函數(shù)獲取拼音,用正則優(yōu)化速度,都可以加快代碼運行速度,可以滿足一般的辦公自動化需求。
2.示例代碼
三、說明
1.上述完整代碼中,第一部分——函數(shù)部分并非本人原創(chuàng),是網(wǎng)友中的大佬提供的,非常感謝大佬分享。主要就是根據(jù)漢字與拼音的映射關(guān)系獲取漢字的拼音。
2.如果使用正則,速度確實相當(dāng)快,但是最好是在純文本文檔中使用;如果在有各種形狀、圖片、表格、域等復(fù)雜對象的文檔中,不建議使用,因為有可能出現(xiàn)某些錯誤。后面有時間再和大家分享可能的錯誤。
3.代碼中刪除拼音指南也提供了兩種方法,可以看相應(yīng)批注和測試。
4.對于多音字,還是需要人工校對,雖然自定義函數(shù)可以獲取多音字的多個讀音,但精確匹配,需要代碼量就更大,所以本文沒有進行進一步處理。
5.這些方法都不一定是最優(yōu)解,如果有更好的方法,也歡迎大家多多分享,共同探討。
如果您有VBA/Office/辦公自動化問題,歡迎提問和一起交流。