word录制宏为整篇word文档加拼音标注的方法

所属分类: 软件教程 / 办公软件 阅读数: 935
收藏 0 赞 0 分享

打印一篇童话,突然想到如果为童话加上标音会更适合小孩阅读,就试图为整篇文档加拼音标注,但结果令我失望,微软的word加拼音有字数限制,每次只能为几十个字加拼音标注,如果以这种方式为一篇几千字的童话加拼音,工作量将会令人无法忍受。为此,我决定为word加一个简单的宏命令,令这个工作简单化。



由于对word宏命令不太熟悉,我将个任务分解为三部分,第一,了解光标的移动指令;第二,了解加拼音的命令;第三,对排版进行一些美化调整。

第一点并不复杂,简单录制一个宏,移动一下光标,就很清楚地看到移动的指令了。
Selection.MoveRightunit:=wdCharacter,Count:=1,Extend:=wdExtend
接下来,我在msdn简单浏览了一下selection对象以及一些move前缀的方法,初步了解了一些移动的指令。

第二点,我右键点了下菜单,在自定义菜单中找了“拼音标准”对应的命令FormatPhoneticGuide,以此为关键字进行搜索,很快就得到了在宏中使用的简单调用方法,但这个方法我觉得不科学,如果有软件处理响应时间跟不上,很容易就会崩溃,但没找到更好的方法:
SendKeys"{enter}",2‘模拟键盘输入,2是等待时间,因为加拼音标注的对话框调用在后面,为了正确向它发出回车键信息,要等几秒,事实上这个值越大越安全,但等待时间太长会影响程序的运行效率,这个方法我认为不太好,但没有找到FormatPhoneticGuide的其它信息,也就将就使用这个笨方法了!Application.RunMacroName:="FormatPhoneticGuide"

第三点,为了让加了拼音后的文字容易阅读,我决定每个字之间都加上一个空格,否则的话,拼音全挤在一起,会令小孩在拼读时迷惑,这相当简单,录制一个宏,就按一下键盘箭头右移动,然后打个空格就好了,在程序中可以将这个动作循环一下。
Addpinyin的宏很快就写好,我一句句单步了一下,没有什么意外,效果还不错,直接上结果图。喜欢的朋友可以也可以看看完整的宏代码。


复制代码
代码如下:

Sub AddPinYin()
'Author:MissileCat Date:20140410 version:1.0.0
' Addpinyin 宏
'为一篇完整的word文字加上标音标注</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> '为每个字都加上空格
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 "任务成功完成"
' .Range.PhoneticGuide Text:="lǐ", Alignment:= _
' wdPhoneticGuideAlignmentOneTwoOne, Raise:=15, FontSize:=8, FontName _
' :="宋体"

End Sub

更多精彩内容其他人还在看

PowerPoint2007中如何在形状图上面添加图片?

我们在做PPT的时候,有时候为了让画面更加美观,达到某种特别的效果,那么就要用到图片,然而要将自己的图片插入到形状,图形中,那该怎么办呢?一起来看看我是怎么做得吧
收藏 0 赞 0 分享

Word2007文档种怎么在底部插入Excel表格?

Word2007文档种怎么在底部插入Excel表格?Word文档种想出入一个完整的excel表格,而不是直接插入表格,该怎么办呢?下面我们来看看word中插入excel表格的详细教程
收藏 0 赞 0 分享

excel中isoweeknum函数有什么作用?怎么使用?

excel中isoweeknum函数有什么作用?怎么使用?很多朋友并不是很清楚,其实操作很简单的,下面小编就为大家详细介绍一下,不会的朋友可以参考本文
收藏 0 赞 0 分享

在excel中month函数有什么作用?如何使用?

在excel中month函数有什么作用?如何使用?很多朋友并不是很清楚,所以下面小编就为大家详细介绍一下,不会的朋友快快来学习吧
收藏 0 赞 0 分享

PPT怎么出入Excel电子表格?ppt插入excel表格形式数据的教程

PPT怎么出入Excel电子表格?ppt文档中插入数据,但是想直接以excel电子表格显示,该怎么办呢?下面我们来看看ppt插入excel表格形式数据的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

EXCEL怎么使用批量批阅试卷减轻教师负担?

EXCEL怎么使用批量批阅试卷减轻教师负担?每次考试批改试卷是最愁人的,很多学生,很多份试卷批完也很麻烦,而且还分为两卷,怎么才能快速的批改试卷呢?下面我们来看看EXCEL来实现批量阅卷,以减轻教师的负担的方法
收藏 0 赞 0 分享

PPT快速绘制出桨形的风车图形?

PPT快速绘制出桨形的风车图形?ppt中可以绘制很多图形,为ppt课件达到预期的效果,我们今天来教大家绘制桨形来完成风车图形的效果,详细内容请看下文图文教程,需要的朋友可以参考下
收藏 0 赞 0 分享

在excel表格中怎么进行分数排列?

刚学习excel表格的新手们,你们知道如何给数据排序吗,因为这是一个很重要的功能哦,比如你想把成绩排序,看看谁的成绩最高,谁的最低,还有给杂乱的数据按照时间排序,顿时表格就清晰了,这些都是很必要的。那么在excel表格中怎么进行分数排列?下面我们来看看吧
收藏 0 赞 0 分享

PPT中动态按钮和超链接有什么区别?该怎么设置?

PPT中动态按钮和超链接有什么区别?该怎么设置?在ppt中动态按钮和超链接是经常会用到的功能,但是他们之前有什么区别,分别该用在什么地方?下面我们来看看详细介绍
收藏 0 赞 0 分享

excel统计函数countif有什么作用?怎么使用?

excel统计函数countif有什么作用?怎么使用?很多朋友都不是很清楚,其实方法很简单的,下面小编就为大家详细介绍一下,一起来学习吧
收藏 0 赞 0 分享
查看更多