
由于對(duì)Word宏命令不太熟悉,我將個(gè)任務(wù)分解為三部分,第一,了解光標(biāo)的移動(dòng)指令;第二,了解加拼音的命令;第三,對(duì)排版進(jìn)行一些美化調(diào)整。
第一點(diǎn),并不復(fù)雜,簡(jiǎn)單錄制一個(gè)宏,移動(dòng)一下光標(biāo),就很清楚地看到移動(dòng)的指令了。
Selection.MoveRightunit:=wdCharacter,Count:=1,Extend:=wdExtend
接下來(lái),我在msdn簡(jiǎn)單瀏覽了一下selection對(duì)象以及一些move前綴的方法,初步了解了一些移動(dòng)的指令。
第二點(diǎn),我右鍵點(diǎn)了下菜單,在自定義菜單中找了“拼音標(biāo)準(zhǔn)”對(duì)應(yīng)的命令FormatPhoneticGuide,以此為關(guān)鍵字進(jìn)行搜索,很快就得到了在宏中使用的簡(jiǎn)單調(diào)用方法,但這個(gè)方法我覺(jué)得不科學(xué),如果有軟件處理響應(yīng)時(shí)間跟不上,很容易就會(huì)崩潰,但沒(méi)找到更好的方法:
SendKeys"{enter}",2‘模擬鍵盤(pán)輸入,2是等待時(shí)間,因?yàn)榧悠匆魳?biāo)注的對(duì)話(huà)框調(diào)用在后面,為了正確向它發(fā)出回車(chē)鍵信息,要等幾秒,事實(shí)上這個(gè)值越大越安全,但等待時(shí)間太長(zhǎng)會(huì)影響程序的運(yùn)行效率,這個(gè)方法我認(rèn)為不太好,但沒(méi)有找到FormatPhoneticGuide的其它信息,也就將就使用這個(gè)笨方法了!application.RunMacroName:="FormatPhoneticGuide"
第三點(diǎn),為了讓加了拼音后的文字容易閱讀,我決定每個(gè)字之間都加上一個(gè)空格,否則的話(huà),拼音全擠在一起,會(huì)令小孩在拼讀時(shí)迷惑,這相當(dāng)簡(jiǎn)單,錄制一個(gè)宏,就按一下鍵盤(pán)箭頭右移動(dòng),然后打個(gè)空格就好了,在程序中可以將這個(gè)動(dòng)作循環(huán)一下。
Addpinyin的宏很快就寫(xiě)好,我一句句單步了一下,沒(méi)有什么意外,效果還不錯(cuò),直接上結(jié)果圖。喜歡的朋友可以也可以看看完整的宏代碼。
| 代碼如下:復(fù)制內(nèi)容 |
| Sub AddPinYin() 'Author:MissileCat Date:20140410 version:1.0.0 ' Addpinyin 宏 '為一篇完整的word文字加上標(biāo)音標(biāo)注</p> <p> Dim tintTreatingCount As Integer Dim tstrCharA As String Dim tlngCurPos As Long Dim tintA As Integer</p> <p> Selection.WholeStory tstrText = Selection.Text tintTextLength = Selection.Characters.Count tintlinestart = 1</p> <p> tintTreatingCount = 0</p> <p> Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1</p> <p> Selection.MoveRight unit:=wdCharacter, Count:=1, Extend:=wdExtend Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1 For tintloopx = 1 To tintTextLength tlngCurPos = Selection.MoveRight(unit:=wdCharacter, Count:=1, Extend:=wdExtend) tstrCharA = Right(Selection.Text, 1) If AscW(tstrCharA) < 255 And AscW(tstrCharA) > -255 Then If tintTreatingCount > 0 Then tintA = Len(Selection.Text) SendKeys "{enter}", 2 Application.Run MacroName:="FormatPhoneticGuide" Selection.MoveRight unit:=wdCharacter, Count:=tintA</p> <p> tintTreatingCount = 0</p> <p> End If Else tintTreatingCount = tintTreatingCount + 1 End If Next</p> <p> '為每個(gè)字都加上空格 Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1</p> <p> 'Selection.HomeKey unit:=wdStory</p> <p> For tintloopx = 1 To tintTextLength Selection.MoveRight unit:=wdCharacter, Count:=1 Selection.TypeText Text:=" " Next MsgBox "任務(wù)成功完成" ' .Range.PhoneticGuide Text:="lǐ", Alignment:= _ ' wdPhoneticGuideAlignmentOneTwoOne, Raise:=15, FontSize:=8, FontName _ ' :="宋體" End Sub |
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注