学点VBA---WORD的编程工具.txt再过几十年,我们来相会,送到火葬场,全部烧成灰,你一堆,我一堆,谁也不认识谁,全部送到农村做化肥。学点VBA---WORD的编程工具 [首页][目录]
深入浅出学WORD(八)
学点VBA---WORD的编程工具
董占山
在前几讲中我们提到了WORD的宏功能,本讲将就这个议题展开,较深入地讨论WORD的编程功能。您通过这一讲
的学习,将会明白原来编程并不困难,困难的只是向自己的错误观念挑战。
宏和VBA的基本概念
在模板一讲我们讲到宏是一种排版工具。那么宏到底什么呢?其实宏是用一种Word自带的编程语言VBA创建的程
序。在WORD系统中,大量使用了宏命令,如Word的向导就是使用宏的最典型例子。还有,听说过宏病毒吧,它
也是用VBA写成的。
先讲讲什么是VBA?VBA的全称是Visual Basic for Application,意思是面向应用的Visual Basic。VBA是
所有Office 97组件公用的一种编程语言,而且编程的方法类似于Visual Basic 5.0开发平台。所以说,
VBA是一种功能强大的Windows编程语言,通过它可以把您带入到Windows编程的殿堂。
你可能会问:我从来没有编过程序,能使用VBA编程吗?答案是肯定的。学习了这一讲,你就会知道编程并不难
,从此,你或许会经常享受到编写程序的酸甜苦辣了!
宏(Macro)是用VBA命令编写的一段程序,它可以控制WORD按一定顺序执行一系列工作。宏命令主要用来将编
辑、排版过程中经常重复的步骤或一些复杂的操作过程组合起来,达到简化操作,提高文档的编排效率的目的
利用宏命令,还可以实现一些WORD原本没有的功能,从而扩展WORD的功能。宏命令制作好之后,您可以将它
赋予工具栏按钮、菜单项或快捷键,这样就可以象使用WORD本身的命令一样,通过工具栏按钮、菜单命令或者
快捷键来运行宏。对WORD向导感到神秘吗?其实它就是用VBA编写的宏命令,只是它存放在特殊的WORD文档中
,又利用WORD的自动宏,当您打开这种文档时,这些充当向导的宏命令就可以自动执行。录制与运行宏
学习VBA的最简捷的途径是录制并编辑宏命令,你会在不断的学习中提高自己的编程水平。下面介绍录制和运行
宏命令的方法。
录制宏
WORD的宏录制器就象一个录像机,将摄入镜头的所有画面(操作步骤)忠实地记录到录像带(VBA程序)上,在
以后需要重复观看(执行)相同画面(步骤)时重放。使用宏录制器有一点限制,它不能录制文档正文中的鼠
标操作,在需要移动插入点、选择正文的时候,您必须使用键盘命令。除此之外,您用鼠标在菜单或工具栏上
执行的命令,宏录制器会都忠实地记录。
录制宏的操作步骤:单击"工具"*"宏"*"录制新宏"命令,弹出图1所示的录制宏对话窗口,在"宏名"编辑框中
输入宏的名称,WORD默认的宏名是"Macro"加上一个数字1、2、…,如果当前文档是基于非默认模板(即不是
Normal.dot)的文档,而且您希望该宏只保存在该类模板上,在"将宏保存在"下拉列表框中选中所用模板,在
"说明"编辑框中输入宏命令功能的解释性文字,便于以后查使用,如果想让录制的宏指定到工具栏、键盘上
单击"将宏指定到"组框中的相应按钮,根据对话框的提示,将宏指定到工具栏、键盘上。单击录制宏对话窗
口的"确定"按钮,这时,在屏幕上出现一个"录制宏"工具栏窗口,鼠标指针变成一个带有一合磁带的箭头,一
步一步执行您要录制的所有操作,录制完毕,单击"录制宏"工具栏上的"停止"按钮,结束宏的录制。
图1  录制宏对话窗口
运行宏
运行宏的方法有5种:给宏定义一个快捷键,只要按快捷键就可运行之;将宏定义为一个菜单命令,单击菜单命
令运行之;把宏指定到工具栏上,使其与一个图标按钮相对应,单击图标按钮运行之;自动运行;从宏对话框中
运行。前3种方法需要通过"工具"菜单的"自定义"命令将宏定义到菜单、工具栏或快捷键后才能使用;自动执行
是对一类特殊的宏而言的;只有最后一种,任何宏甚至所有的Word命令都可以通过这种方法执行。
有一种特殊的宏,与WORD的操作事件相关联,当执行这些事件时,与之关联的宏就自动运行,
这种宏叫自动宏。
WORD能识别五种自动宏:自动更新(AutoNew)、自动打开(AutoOpen)、自动关闭(AtuoClose)、自动执
行(AutoExec)和自动退出(AutoExit)。在括号中的英文就是这些宏的名称,您不能用其它名字来代替,假
如您使用其它名字WORD就把它们当作普通的宏对待。因此,如果您编写或录制宏时,也不要将普通的宏命名为
自动宏的名称。
如果您对自动宏还是不大理解的话,打个比方也许您马上就明白了,自动宏对于WORD的作用就好比
CONFIG.SYS和AUTOEXEC.BAT对于DOS系统的作用一样,在DOS启动时,如果存在CONFIG.SYS 和AUTOEXEC.BAT,
那么,DOS就会自动执行它们,如果这两个文件不存在,DOS就显示当前的日期和时间。
单击"工具"菜单中的"宏"命令,弹出Error! Reference source not found.所示的宏对话窗口;如果您知道
宏名,您可以在"宏名"编辑框中直接键入宏名;如果您不知道或记不清宏名,请在"宏名"列表框中查,查到
后,单击选中它;这时对话窗口如Error! Reference source not found.所示;单击〖运行〗按钮,或直接
按键,运行选定的宏。
用VBA直接创建宏
如果还没有制定的宏,您需要使用创建宏功能创建它;如果已经存在指定的宏,可以通过编辑宏来改变它的功
能。
创建宏
创建宏与录制宏相仿,不同的是由您自己来编写WORDBASIC程序,而非将操作录制下来,这允许您编写一些用
录制的方法做不到的宏命令,从而有效地扩充WORD系统。
创建宏的步骤:单击"工具"菜单中的"宏"命令,弹出宏对话窗口;在"宏名"编辑框中输入欲创建宏的名称,如
"AutoExit",这时对话窗口变成Error! Reference source not found.所示的形式;单击〖创建〗按钮,进
入宏编辑窗口,如Error! Reference source not found.所示;在Sub MAIN和End Sub之间输入WORDBASIC的
命令和函数,以完成一定的操作;当您编写好宏后,单击"文件"菜单中的"关闭"命令,弹出提示窗口;单击
〖是〗按钮,保存宏命令到共用模板上,完成宏的创建。
编辑或查看宏
如果一个宏命令已经存在,但您想修改之,可以按照如下步骤打开宏编辑窗口:单击"工具"菜单中的"宏"命令
,弹出和对话窗口;在"宏名"列表框中选中宏一个欲编辑的宏;单击〖编辑〗按钮,切换到。
一旦打开宏编辑窗口,您就可以在Sub MAIN和End Sub之间插入有效的WORDBASIC指令,开始用WORDBASIC语言
编程,关于WORDBASIC语言的命令和函数WORD提供了完整的帮助文本,这里不多讲,有兴趣的读者可以打开
WORD的帮助目录,查与WORDBASIC有关的信息。
技巧:您可以先录制一个包含主要命令的宏,然后再把它调入宏编辑窗口进行编辑、修改,这样往往可以节省
大量的编程时间,同时减少程序中的错误,提高编程的效率。
自己动手,丰衣足食
讲了一大堆废话,快给我们提供几个实用的宏命令吧,让我们看看效果如何。好的,学以致用,我们提供两个
比较实用的宏命令,供读者学习参考。
自动输入分数的宏
我们在编辑科技文档时常常要用到分数,可是WORD中不能直接输入分数,可以使用WORD的EQ(方程)域来实现
,也可以使用公式编辑器来实现。这两种方法都不简便,下面的Fraction宏命令可以在文档中方便地插入分数
域。使用方法是:将插入点定位到需要插入分数的位置,运行该宏,弹出如图-1所示的对话窗口,分别在"分子
表达式"和"分母表达式"编辑框中输入分数的分子和分母,单击〖确定〗按钮输入分数域。
图-1  输入分数对话窗口
Fraction程序清单:
Sub MAIN
Begin Dialog UserDialog 192, 122, "输入分数"
TextBox 14, 20, 160, 18, .TextBox1
Text 15, 6, 76, 13, "分子表达式", .Text1
TextBox 17, 64, 160, 18, .TextBox2
Text 17, 50, 76, 13, "分母表达式", .Text2
OKButton 36, 92, 50, 21
CancelButton 101, 92, 49, 21
End Dialog
Dim dlg As UserDialog
x = Dialog(dlg)
If dlg.Textbox1 <> "" box2 <> "" Then
fractiontext$ = "EQ \F(" + box1 + "," + box2 + ")" ToolsOptionsView .FieldCodes = 1
InsertField .Field = fractiontext$
ToolsOptionsView .FieldCodes = 0
End If
End Sub
插入3行并列字符组合的宏
在介绍域功能那一讲,我们适用公式域编排了英文试卷或书籍的改错题版式。这里提供的VBA 程序
CombineChars就是用来简化这一排版过程的。
CombineChars的使用方法:将插入点移到需要这种版式的位置,运行这个宏,弹出图-2所示的对话窗口,在
"线上字符"编辑框中输入英语单词或词组,在"线下字符"编辑框中输入字母A、B、C等,单击〖确定〗按钮在文
档中插入域。
图-2  创建3行组合字符的对话窗口
CombineChars宏程序清单:
Sub MAIN
Begin Dialog UserDialog 290, 86, "创建3行组合字符"
Text 7, 7, 61, 13, "线上字符", .Text1
TextBox 7, 20, 160, 18, .FirstText
Text 8, 48, 61, 13, "线下字符", .Text3
TextBox 7, 61, 160, 18, .ThirdText
OKButton 191, 18, 88, 21
CancelButton 192, 55, 88, 21
End Dialog
Dim dlg As UserDialog
x = Dialog(dlg)
If x = - 1 Then
If dlg.FirstText <> "" Then
SecondText$ = String$(Len(dlg.FirstText), "-")
vba编程技巧CombineText$ = "eq \o (\s \up 0(" + dlg.FirstText +
"),\s \do 5(" + SecondText$ +
"),\s \do 10(" + dlg.ThirdText +

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。