学点VBA---WORD的编程工具.doc_第1页
学点VBA---WORD的编程工具.doc_第2页
学点VBA---WORD的编程工具.doc_第3页
学点VBA---WORD的编程工具.doc_第4页
学点VBA---WORD的编程工具.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学点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 MAINBegin Dialog UserDialog 192, 122, 输入分数TextBox 14, 20, 160, 18, .TextBox1Text 15, 6, 76, 13, 分子表达式, .Text1TextBox 17, 64, 160, 18, .TextBox2Text 17, 50, 76, 13, 分母表达式, .Text2OKButton 36, 92, 50, 21CancelButton 101, 92, 49, 21End DialogDim dlg As UserDialogx = Dialog(dlg)If dlg.Textbox1 And dlg.textbox2 Thenfractiontext$ = EQ F( + dlg.textbox1 + , + dlg.textbox2 + )ToolsOptionsView .FieldCodes = 1InsertField .Field = fractiontext$ToolsOptionsView .FieldCodes = 0End IfEnd Sub插入3行并列字符组合的宏在介绍域功能那一讲,我们适用公式域编排了英文试卷或书籍的改错题版式。这里提供的VBA程序CombineChars就是用来简化这一排版过程的。CombineChars的使用方法:将插入点移到需要这种版式的位置,运行这个宏,弹出图-2所示的对话窗口,在线上字符编辑框中输入英语单词或词组,在线下字符编辑框中输入字母A、B、C等,单击确定按钮在文档中插入域。图-2 创建3行组合字符的对话窗口CombineChars宏程序清单:Sub MAINBegin Dialog UserDialog 290, 86, 创建3行组合字符Text 7, 7, 61, 13, 线上字符, .Text1TextBox 7, 20, 160, 18, .FirstTextText 8, 48, 61, 13, 线下字符, .Text3TextBox 7, 61, 160, 18, .ThirdTextOKButton 191, 18, 88, 21CancelButton 192, 55, 88, 21End DialogDim dlg As UserDialogx = Dialog(dlg)If x = - 1 ThenIf dlg.FirstText ThenSecondText$ = String$(Len(dlg.FirstText), -)CombineText$ = eq o (s up 0( + dlg.FirstText + ),s do 5( + SecondText$ + ),s do 10( + dlg.ThirdText + )ToolsOptionsView .FieldCodes = 0InsertField .Field = CombineText$End IfEnd IfEnd Sub查找特定文本,加工处理后,再进行替换下面这个宏命令,提供了一种完成用Word命令不可能完成的功能,它首先在文档中查找特定的文本,当查找到文本后,选中该文本前的若干字符,从中提取一个有效的数值,对数值进行计算加工,讲计算出的数值在转换为字符串,替换掉原来的数值字符串,最后将原来查找的文本也替换成另外一个文本。这个宏的用途是修改一篇文档中指定单位的数值为另一种单位的数值。这种修改,如果手工进行将是费时费力,非常容易出错。这个宏命令的用途就在于此。Sub repl()Attribute repl.VB_Description = 宏在 98/11/10 由 Clone 创建Attribute repl.VB_ProcData.VB_Invoke_Func = normal.NewMacros.repl repl Macro 宏在 98/11/10 由 Clone 创建Found1 = TrueIf Found1 Then Selection.Find.ClearFormatting With Selection.Find .Text = gf/tex 写实际的单位 .Forward = True .Wrap = wdFindContinue .MatchByte = True End With Selection.Find.Execute Found1 = Found If Found Then Selection.Cut Selection.MoveLeft Unit:=wdCharacter, Count:=4, Extend:=wdExtend MyText = Selection.Text x1 = Val(MyText) x2 = Int(x1 / 0.98) * 10) / 10 将0.98替换为自己的转换值 NewStr = For i = 1 To Len(MyText) y = Left(MyText, 1) MyText = Right(MyText, Len(MyText) - 1) For j = 0 To 9 If y = Chr(48 + j) Then GoTo L1 Next j NewStr = NewStr + y Next iL1: y1 = Str(x2) NewStr = NewStr + y1 + cN/tex 将$替换为实际单位 Selection.Text = NewStr End IfEnd If Selection.MoveRight Unit:=wdCharacter, Count:=2End Sub小结年轻的朋友,鼓

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论