守柔 WORD VBA 入门 教程
第 1 页 共 9 页
第二课:录制宏、编辑宏与优化宏
上一课中,我们初步认识了VBA是什么,怎么进入VBE编辑器,以及VBE的环境设置等。本课中,我们来录制宏、编辑宏与优化宏。
录制宏有两种方式,一是双击状态栏中的\录制\命令,或者鼠标单击工具\\宏\\录制新宏命令,WORD将记录下您的操作并转换为VB语言.
在XP以下版本中,录制宏操作不支持鼠标操作,您可以使用键盘操作,请结合键盘加速键、键盘快捷键等进行操作,此处不再解释加速键和快捷键的含义。另外,在XP版本中,对部分右键菜单不支持的情况下,可以使用SHIFT+F10进行调用右键快捷菜单等。
OK,我们选择上述方法之一,来录个一个宏,我们的操作是这样的,对全文档中的字体设置为:华文细黑,粗体,12号,行距1.5,段前12磅,段后12磅,录制结束,千万别忘了停止录制宏哟,点“停止”而非关闭“停止录制宏”工具栏,否则,要绕些小圈子了。
如图:
在上图的录制宏对话框中, 我们可以自定义宏名, 将宏提定到工具栏或者键盘上, 保存宏的位置(作用范围), 如果是“所有文档(Normal.dot)”, 则它是全局的宏, 可以为所有文档所调用, 是公共的宏; 如果是本文档, 则是私有的, 仅作用于当前文档。 同理, 如果我们指定在工具栏或者键盘中, 如果是“所有文档(Normal.dot)”, 则该工具栏作用于所有WORD 文档, 反之则仅作用于当前文档, 其它文档中将不会出现此宏、 工具栏或者键盘快捷键。
好, 我们进入 VBE, 你可以使用 ALT+F8, 在宏位置中为当前文档, 找到该宏名, 点右侧的“编辑” 命令, 或者直接 ALT+F11 , 找到该文档的工程资源管理器, 双击“NewMacros\模块, 则在右侧的代码窗口中, 会看到以下代码, 守柔把它注释一下(如果在 VBE 代码窗口中, 我们将光标位于代码中或者选定某个关键字, 按下 F1 , 会出现详细的 VBA 帮助),以使大家更快地明白它的意思:
Sub OurExample()
'这部分说明来自录制宏对话框 ' OurExample Macro
' 宏在 2005-7-20 由 I Love You_Word! 录制 ' \专题讲座之二 ' Selection.WholeStory'全选文档,CTRL+A With Selection.Font '对选定文字
.NameFarEast = \华文细黑\'东亚字体
.NameAscii = \ '设置拉丁文(字符代码从 0(零) 到 127 的字符)所用的字体 .NameOther = \ '设置字符代码从 128 到 255 的字符的字体
守柔 WORD VBA 入门 教程
第 2 页 共 9 页
.Name = \华文细黑\'字体名称 .Size = 12 '字号 .Bold = True '粗体 .Italic = False '非斜体
.Underline = wdUnderlineNone '无下划线
.UnderlineColor = wdColorAutomatic '下划线颜色自动 .StrikeThrough = False ?无删除线格式
.DoubleStrikeThrough = False '无双删除线格式 .Outline = False '无镂空格式 .Emboss = False '无阳文格式 .Shadow = False '无阴影格式 .Hidden = False '不隐藏文字
.SmallCaps = False '不小型大写字母 .AllCaps = False '不全部字母大写
.Color = wdColorAutomatic '自动字体颜色 .Engrave = False '不阴文 .Superscript = False '不上标 .Subscript = False '不下标 .Spacing = 0 '字符间距 .Scaling = 100 '不缩放 .Position = 0 '正常位置 .Kerning = 1 '最小字号
.Animation = wdAnimationNone'无动态效果
.DisableCharacterSpaceGrid = False '不忽略选定文本每行中的字符数 .EmphasisMark = wdEmphasisMarkNone '不设置着重号 End With
With Selection.ParagraphFormat'对于选定内容的段落格式 .LeftIndent = CentimetersToPoints(0)'左缩进为 0,即无 .RightIndent = CentimetersToPoints(0)'右缩进为 0,即无 .SpaceBefore = 12'段前 12 磅
.SpaceBeforeAuto = False'不自动设置指定段落的段前间距 .SpaceAfter = 12'段后为 12 磅
.SpaceAfterAuto = False'不自动设置指定段落的段后间距 .LineSpacingRule = wdLineSpace1pt5'行距为 1.5 倍
.Alignment = wdAlignParagraphJustify'段落对齐方式,常规,两端对齐
.WidowControl = False'重新分页时段中的首行或末行有可能单独位于上页的页尾或下页的页首。 .KeepWithNext = False'文档重新分页时, 指定段落与下一段可能位于下一页
.KeepTogether = False'Word 对文档重新分页时同一段中的各行可能不位于同一页上。 .PageBreakBefore = False'指定段落前不插入分页符 .NoLineNumber = False'不设置行号 .Hyphenation = True'段落进行自动断字
.FirstLineIndent = CentimetersToPoints(0)’首行缩进为 0,即无首行缩进 .OutlineLevel = wdOutlineLevelBodyText'大纲级别为正文文本 .CharacterUnitLeftIndent = 0'段落的左缩进为 0 字符 .CharacterUnitRightIndent = 0'段落的右缩进为 0 字符
.CharacterUnitFirstLineIndent = 0'段落的首行缩进为 0 字符
.LineUnitBefore = 0 ’设置指定段落的段前间距(以网格线为单位) ,0
守柔 WORD VBA 入门 教程
第 3 页 共 9 页
.LineUnitAfter = 0 ’设置指定段落的段后间距(以网格线为单位) ,0
.AutoAdjustRightIndent = True'指定的每行字符数,自动调整所选段落的右缩进。 .DisableLineHeightGrid = False'段落中的字符与行网格不进行对齐。 .FarEastLineBreakControl = True'应用东亚语言文字的换行规则 .WordWrap = True'西文单词中间断字换行 .HangingPunctuation = True'允许标点溢出边界
.HalfWidthPunctuationOnTopOfLine = False'行首标点符号不改为半角字符
.AddSpaceBetweenFarEastAndAlpha = True'中文文字和拉丁文字之间自动添加空格 .AddSpaceBetweenFarEastAndDigit = True'中文文字和数字之间添加空格
.BaseLineAlignment = wdBaselineAlignAuto'自动调整活动文档中的基线字体对齐方式 End With End Sub '
----------------------
哇,简单地几步操作,这么多的代码(70 多行),别急,您对比一下以下我们的操作:字体对话框和段落对话框,您就明白了:
在上面的代码中,有代码,有注释,注释是良好程序员的一个重要标志,一个程序,需要必要的注释,不但对使用者,阅读者有利,对编程人员今后的代码维修升级也 是十分必要的.注释有两种方式,一种使用撇号('),也可以使用关键字\通常使用前者,可以直接写在代码旁或者另起一行.
守柔 WORD VBA 入门 教程
第 4 页 共 9 页
好家伙,WORD 的宏记录把所有对话框中的信息都录上去了,这样子,尽管我们可以方便地使用它,总是感觉不太\纤美\太\铺张\了. 我们来试试看这个宏是否能达到我们的要求:
运行宏的方法: (常规)
1 . 把文档恢复到录制宏前的状态,按下 ALT+F8,找到活动文档中的这个\宏,点击运行。