WORDVBA编程从零开始学VBA.docx
《WORDVBA编程从零开始学VBA.docx》由会员分享,可在线阅读,更多相关《WORDVBA编程从零开始学VBA.docx(35页珍藏版)》请在冰豆网上搜索。
WORDVBA编程从零开始学VBA
从零开始,步入Word宏编程的世界(第一讲)
工作中,经常看到许多朋友在使用Office时已经非常地熟练,但仍不敢去接触Office的VBA编程;在网上Office的VBA编程论坛中,同样看到有朋友在其中流连了相当长的时间,但仍然不得其门而入。
问一下这两类朋友,前者觉得编程是一件很“高深”的事,自己恐怕学不会;后者为了提高自己的工作效率,虽然很想学,但自己一点编程的基础也没有,照着网上高手们的帖子做,反而越学越糊涂。
当我问第二类朋友为什么不多看看VBA的帮助文件时,“看不大懂,就像有语言障碍一样。
”他这样回答我。
对于第一类朋友,我想说,不要被自己想象出来的“困难”吓倒,如果您没有亲自尝试过,怎么知道编程会很“高深”,又怎么知道自己学不会?
而第二类朋友如果能静下心来把基础知识补一补,相信您的问题也会迎刃而解。
那么,就让我们从最基础的知识开始,步入Office宏编程的世界吧。
文前的几点说明:
1、虽说本文用到的程序在office2007与office2010中同样可以正常运行,但考虑到目前单位办公用机的实际情况,本文所有的实例主要还是面向Office2003的用户;
2、为了便于各位读者理清思路,避免文章涉及面太广,本文主要以office2003中最常用的Word为主进行讲述,有与其它Office套件相关联的地方,将单独说明;
3、为避免学习过程中的枯燥乏味,本文没有像传统编程教材那样以理论知识为线索展开,而是将不同的知识点放到了几个不同的实例之中进行讲述。
所以,把每个实例“做”一遍,细心体会每个实例的知识点,将有助于您快速掌握VBA的编程技术;单纯地“看”,则无助于您的学习。
本文的宗旨是——完全面向初学者!
或许您还能以此为契机叩开奔向VB6.0或VB.NET的大门,说不定您还能编出一、两个病毒玩玩儿(当然仅限于玩玩儿,千万别做出什么傻事来!
)!
好了,下面就开始我们Word的VBA编程之旅吧,愿您旅途愉快!
实例一:
“你好,世界!
”
知识点:
1、熟悉VBE的编程界面;
2、什么是VB、VBE、VBA;
3、什么是过程、工程。
不要以为这些知识点有多难,让我们一步一步地来。
启动Word,指向工具——宏——VB编辑器,打开VB编辑器的界面,如图1-1。
“VB编辑器”就是VBE,VBE是VisualBasicEditing的缩写。
我们在VBE编程环境中所使用的编程语言就是“VBA”,即VisualBasicforApplications的缩写,VBA语言是我们所熟知的VB编程语言的一个子集。
VBE编辑器界面的菜单栏与工具栏就不必说了。
界面左面中间部份是“工程资源管理器”所在的“工程资源管理区”,每一篇Word文档中所编写的程序,Word都把它看成为一个“工程”,“工程资源管理器”就是对这些工程进行管理的地方;界面左下方是“对像属性设置区”,我们可以对自己要用到的对像的属性进行设置,第四个实例中,我们将对“属性设置”进行详细解说,现在大家不必管它;界面右面大面积空白的区域是“代码编辑区”,我们编写的所有代码都放在这儿。
如果看不到这个空白区域,则打开“插入”菜单,插入一个“模块”就行了。
如果“工程资源管理器”已有“模块”,则双击模块名,就能打开“代码编辑区”。
好,现在我们就在这个VBE环境下,利用VBA语言,来编写我们的第一个工程(即程序)。
请在“代码编辑区”中输入如下的代码:
subA()
msgbox(“你好,世界!
”)
endsub
注意,代码“msgbox("你好,世界!
!
")”一句中的引号与括号为英文标点。
点击工具栏上的黑色三角形的“播放键”,或按下F5键运行这个程序,您将看到一个弹出的消息框。
如图1-2。
代码解说:
sub是VB编程中申明一个过程的语句,subA()申明了一个名叫A的过程,A后面跟了一个括号,它的作用现在大家暂时不用管它。
整段程序结尾的endsub语句,表示过程“A”在此结束。
每一个程序都必需有开始与结束的标志,所以,从SubA()到Endsub就构成了一个完整的“过程”。
Msgbox是一个函数,它的作用是弹出一个消息框来,它后面括号中的内容就是要在弹出的消息框中显示的内容。
该函数在我们的第二个实例中,将做详细讲解。
本实例的知识扩展:
1、打开Word,指向工具——宏,再点击“宏”按钮,打开“宏名”对话框。
这时,我们就可以看到刚才我们编写的名叫“A”的宏。
选中“A”,点击“运行”按钮,就能运行该宏。
2、同上操作顺序,打开“宏名”对话框,在“宏名”中新输入一个名字“B”(注意没有引号),再点击“创建”按钮,这时就会打开VBE编辑器,并已为我们生成了一个名为“B”的空过程。
该过程中的绿色文字,就是这个宏的注释。
(如果我们要对自己所编写的代码进行注释,可在注释语句的前面加上一个英文状态下的撇号,该注释的语言是不会被程序运行的。
)用这个方法创建过程,可以避免手工输入时疏忽掉程序结尾的Endsub。
好了,实例一到此结束,回顾一下课前的知识点,都掌握了吗?
如果觉得没有问题了,就准备进入我们的第二个实例吧。
从零开始,步入Word宏编程的世界(第二讲)
实例二:
基本的对话框函数
知识点:
1、认识消息框函数MxgBox与输入框函数InputBox;
2、什么是常量、什么是变量、申明变量的方法是什么;
3、用“&”符号连接字符串。
想想我们平时与他人谈话时的形式——你提问,他回答;或是他提问,你回答。
我们所编写的程序,在与计算机进行交互的过程中,其形式也是这样的一问一答。
所以,几乎所有的编程语言都提供有直接与计算机进行对话的函数,在VBA中,这样的最基本的函数是消息函数“MsgBox”与输入框函数“InputBox”。
请输入以下代码并运行:
’’’======还有待完善的程序一=====
subB()
DimX
X=inputbox("您的姓名是:
")。
Msgbox("欢迎您"&X&"朋友!
")
EndSub
注意:
1、在输入“Msgbox("欢迎您"&X&"朋友!
")”这行代码时,括号内几个字符串之间有空格,没有输入空格的话会出错,出错时,代码将以红色显示。
2、本程序运行时如果点“取消”按钮,其实会出现问题,关于对这个问题的解决方法,将在后面讨论。
所以,我们先称本程序为“还有待完善的程序”。
(朋友们可以先试一下,看看会出现什么问题?
)。
运行效果如图2-1与图2-2。
看到了吗?
这就是最简单的与计算机进行对话的效果。
代码解说:
从SubB()到Endsub就是一个完整的过程——“B”。
“InputBox("您的姓名是:
")”这句代码是显示一个“输入框”,请您输入自己的姓名。
这句代码事实上就是一个计算机提问,人回答的“对话”过程。
其中,“InputBox”函数的作用就是弹出一个输入框,等待我们回答计算机的提问。
当然,我们在回答计算机时,可能填的是“老王”也可能填的是“老李”……,这个答案本身是不固定的,所以,我们将这个答案的值赋予“变量”——“X”。
这下,大家可能就知道“变量”的含意了吧?
在程序运行中,我们经常会遇到值不能确定,或者是可能会发生改变的某个数据,在这个时候,我们就用一个“符号”来“代替”这个可能会变化的值,这个用来代替不能确定的值的“符号”,就是“变量”。
现在,我们删去本程序中的“DimX”这句后,再运行一下试试效果。
怎么样,是不是感觉不到区别?
(如果程序报错说“没有申明变量”的话,没有关系,请接着看下面的内容。
)在VBA语言中允许我们不申明变量就直接运用它,所以程序仍然能够正常运行。
“DimX”这句代码中的“Dim”就是申明变量的函数,“DimX”就是申明了一个名叫“X”的变量。
在“X=inputbox("您的姓名是:
")”这句代码中,我们利用等号,将输入框中取得的值赋予给了变量“X”。
虽说我们不申明变量就可以使用它,但这绝对不是个好的习惯。
首先,在一些代码较长的程序中,您能保证那些名字较长的变量在后面用到时,您不会输错吗?
其次,自己不申明变量,时间久了,那些较长的程序可能会连您自己也看不懂;另外,程序在访问申明过的变量时,速度会比访问没有申明过的变量要快一些。
为了避免我们使用变量时出错,我们可以在VBE编辑器菜单的工具——选项——编辑器选项卡上,选中“要求申明变量”(见下面图2-3、2-4),这样VBE会自动在我们每一个工程的前面加上一句“OptionExplicit”,这句代码将检查我们所要使用的变量是否申明,没有申明的话就会中止程序的运行。
做了上述的操作后,我们再运行去掉“Dim X”语句的过程,程序就会报“没有申明变量”的错误。
关于变量,还有一些其它的知识,我们将在实例三中进行更深一步的学习,现在就到这吧。
“Msgbox("欢迎您"&X&"朋友!
")”这句中的“msgBox”函数,大家已不陌生,它的作用就是弹出一个消息框来(在本程序中,这个消息框就是计算机对我们输入姓名后的回答。
)。
在这个消息框所显示的文字中包含了三个部分。
字符串“欢迎您”、字符串“朋友!
”和变量“X”所可能对应的字符串“老王、老李……”等。
在VBA语言中,我们使用“&”符号来连接字符串,所以我们在程序运行最后,看到的是一个像图2-2那样完整的欢迎语句。
VBA语言中,在使用“&”连接符号时,请一定注意字符串与字符串之间有一个空格,否则程序一定会出错。
由于MsgBox函数与InputBox函数是两个非常常用的对话函数,所以,我们再对它进行更深一步的学习。
使用MsgBox函数时的标准格式:
变量=MsgBox(”要显示在这儿的语句”,按钮的参数,”消息框的题目”)
例子:
Y=MsgBox(”欢迎您”&X&”朋友!
!
”,0,”这里是欢迎对话框”)
请注意格式中英文状态下的引号、逗号与空格的使用。
使用InputBox函数时的标准格式:
变量=InputBox(“要显示的提示文本”,”输入框的题目”,”输入框中默认显示的语句”)
例子:
X=InputBox(“请输入您的姓名”,”这里是输入对话框”,”您的姓名请输入到这儿。
”)。
根据上面的格式,请修改本实例的程序代码为:
’’’======还有待完善的程序二=====
SubB()
DimX
DimY
X=inputbox("您的姓名是:
",”姓名输入框”,”您的姓名请输入到这儿。
”)
Y=Msgbox("欢迎您"&X&"朋友!
",0,”这里是欢迎对话框.”)
EndSub
本段程序应该很容易读懂吧?
运行一下,看看与前面程序的区别在什么地方?
再分别把MsgBox函数的参数0替换为0、1、2、3、4、5这几个参数并运行,看看又有什么不同?
怎么样,对话框中给出的提示是不是更丰富?
下面的图2-5与图2-6是MsgBox函数的参数为“5”时的运行效果。
(请与前面的图2-1与图2-2对比一下,看看到底哪些地方有了变化?
)。
程序写到这么详细,您是否已经觉得它已经很完善了呢?
那么,在当程序要求您输入您的姓名时,如果您选择了“取消”,会