当前位置:首页 > WORD VBA编程 从零开始学VBA
Set myRange = ActiveDocument.Range
(Start:=ActiveDocument.Content.End–1,End:=ActiveDocument.Content.End - 1)
myRange.Paste End sub
本例代码较长,重点的地方解释如下:
“Paragraphs”是Document对像的一个子对像,即“段落”对像,其后跟的参数“1”,表示引用文档的第一段。(“Paragraphs”对像也是“Document对像”中一个重要的子对像,本文本拟介绍,但考虑到内容的长短,故省略。本对像的内容请参考帮助文件。)
“Set”语句是一个赋值语句,与我们前面学习的“Dim”相关联,“Dim”的作用是申明一个变量,而“Set”语句是将“对一个对像的引用”赋给一个变量。本例中其实是为了找出文章结束的“点”,而将“能够找出该点的语句” 赋给了变量myRange。
“Content”是“Document对像”的一个属性,它返回Document对像的所有文字。本段代码中运用“End”关键字,来找出文字的结尾处,并用“End—1”将结尾向后移动了一位。
代码如果在一行中写不下,可以用一个下划线“_”来连接前后的代码,本例中“Set”这句较长,可以使用这个连接符。
Selection对像
即活动区域对像,Selection对像的方法也非常多,以下介绍常用的“InsertFile”方法,该方法能插入指定文档的全部或部分内容。其语法为:对像.InsertFile(“要插入的文章名FileName”)
FileName参数必须指定,如果没有指定路径,则 Word 将文档路径设为当前路径。
实例:在活动文档中插入另一个文档,文档插入到您当前光标所在的位置(即“Selection对像”处)。 ’’’======插入文档例====== Sub 插入文档例 () Dim MyDoc
MyDoc = InputBox(“请输入您要插入的文章路径及文章名”)’’’如果选“取消”就需要错误调试。 Selection.InsertFile FileName:=MyDoc End Sub
在实际工作中,我们经常需要将一个文件夹下的所有文档合并到一篇文档中来,如果使用Word“插入”菜单中的“插入文件”命令,一旦文档数量太多,则会非常麻烦。其实,运用一个变量取得文件的名称,并使用循环语句重复运行本段代码,就会使这项工作变得简单。
本实例的知识扩展:请尽量熟悉帮助文件中所有对像的属性、方法与事件。
实例六到此结束,本实例内容较多,愿朋友们通过本实例,既能熟悉这几个重要对像的使用方法,又能以此作为自己熟悉VBA帮助文件的一个台阶。毕竟,本文不可能涉及VBA的方方面面,更多的内容需要大家从“帮助”中去获得。如果大家能够熟练掌握本实例中的内容,那么,再看帮助文件,将不会再是一件难事。
从零开始,步入Word宏编程的世界(第七讲)
实例七:自定义Word的命令栏
知识点:1、菜单栏与工具栏知识基础;
2、“运行时”修改菜单栏与工具栏。
Office组件中的每一个程序,都有菜单栏和工具栏,而且任何Office程序中的菜单栏与工具栏在VBA中的对像都是“ComandBar”对像。所以,本实例可以用于所有Office程序。
很多朋友在学习VBA的过程中,感到“自定义命令栏”这部份内容难以掌握,原因就在于没有弄清“ComandBar”对像结构的层次性。好了,下面让我们静下心来,开始——
一、“ComandBars”对像与“ComandBar”对像
“ComandBar”对像就是“命令栏”对像,在Application(程序)中无论是菜单栏还是工具栏,都是一个“ComandBar”对像。我们在编程时,对菜单栏与工具栏的修改,都是通过操作“ComandBar”对像来实现的。举一个实例,比如从“文件”菜单到“帮助”菜单为止的那个命令栏,按住“文件”菜单左边有一个竖线的地方,就可以把这个命令栏拖离原位置。这个“命令栏”就是一个“ComandBar”对像。现在我们已经知道什么是命令栏“ComandBar”对像了,那什么是“ComandBars”对像呢?既然尾巴上有字母“s”,“ComandBars”对像肯定就是所有命令栏的集合了!
(一)CommandBars对像的Add方法
Add方法,用于创建一个新的命令栏(这个命令栏既可以是菜单栏,也可以是工具栏。)。
本方法的格式为:对像.Add(“新命令栏的名称Name”,“新命令栏所在的位置Position”,“新命令的作用时期Temporary”)。
参数解释:
Position参数有六个常数:“msoBarLeft,msoBarTop,msoBarRight,msoBarBottom”这四个常数指定新命令栏左右和上下的坐标;“msoBarFloating” 表明新命令栏是可移动的;“msoBarPopup” 表明新命令栏是一个快捷菜单。
Temporary:如果Temporary=True,则新命令栏会在程序关闭时,同时被删除(也就是说,该命令栏只是暂时有效);如果Temporary=False,则不会被删除(Office程序默认为False。)另外,Office组件中的Word与Outlook 会忽略此参数,因此在退出Word或Outlook应用程序之前,您必须手工删除所有临时添加到CommandBars集合中的ComandBar对像。
以下实例创建了一个名叫“新工具栏”的命令栏。 ’’’=========创建一个命令栏=========== Sub 创建一个命令栏()
CommandBars.Add(Name:=\新工具栏\End Sub
代码中的“Visible = True”表示将创建的工具栏显示出来,如果“Visible = False”则会创建一个隐藏的工具栏(“Visible”是很多对像的属性。)。“Position:=msoBarTop”则表示新建的命令栏居于程序的顶部。如图7-1。
(二)在CommandBars对像中引用CommandBar对像
在CommandBars对像中引用CommandBar对像常用的方法有两种。
第一种:我们在针对某一个菜单项进行操作时,可以直接引用这个菜单项的名称来调用它。如:
CommandBars(\对应“视图”菜单、CommandBars(“Text”)对应右键弹出菜单等等。请看实例——
’’’’=======使视图菜单失效======== sub 使视图菜单失效 ()
CommandBars(\End sub
Enabled属性是很多对像的属性,它的作用是决定对像在应用程序中的状态。本实例中,如果属性值为True,那么激活指定的命令栏或命令栏控件;如果属性值为False,则该命令栏控件将失效。运行本代码查看效果之后,可将Enabled 的值改为True,再次运行,将视图菜单恢复过来。使视图菜单失效的效果如图7-3。
第二种:我们在对许多菜单项进行操作时,如果像前例那样一个一个写出名称的话会很麻烦,所以可以使用菜单所对应的ID号来调用它。请看实例——
本实例隐藏程序中ID号在前80位的命令栏。
’’’’’’’’’’’’===========隐藏命令栏========== Sub 隐藏命令栏() Dim a, b
b = 80 '定义最后的ID值 a = 1 '定义初始ID值 Do '进行循环
a = a + 1 '累加ID值
Application.CommandBars(a).Enabled = True ' 隐藏ID值对应的命令栏 If a = b Then '在a=80时,准备退出循环 Exit Do Else End If
Loop '继续循环
本程序应该不难理解,其实这个用这个方法隐藏命令栏是很傻的,特别是在不知道哪个命令栏对应哪个ID号的时候,用For Next循环是更好的选择(关于“For Next循环”的知识可在帮助文件中找到。)。
二、“CommandBarControl ”对象与“CommandBarControls” 对像
“CommandBarControl 对象”代表命令栏中的命令按钮,“CommandBarControls 集合”则是单个命令栏中所有命令按钮的集合。用CommandBar对像的 “Controls” 属性可返回 CommandBarControls 集合”,格式是“命令栏名·Controls属性 = 该命令栏的CommandBarControls 集合”。
“CommandBarControls”集合对像包含了一个菜单栏或工具栏中所有的命令按钮。根据命令按钮的不同特点,它们又可以具体分为:
按钮对像(CommandBarButton),表示命令栏是的一个上的命令按钮。
弹出式控件(CommandBarPopup 对象),该对像又可以返回一个CommandBar对像。 组合框控件(CommandBarComboBox),该对像代表命令栏中的一个组合框。
下面的实例,用“CommandBarControls对像”的Add方法,在菜单栏上添加了一个子菜单。 Sub 添加子菜单() Dim Zicaidan
Set Zicaidan = Application.CommandBars(36).Controls.Add(msoControlPopup, , , , True) Zicaidan.Caption = \添加的菜单\End Sub
代码中的“Application.CommandBars(36)”是利用ID号找到“文件”菜单所在的CommandBar命令栏(该命令栏所对应的ID值为“36”,关于怎样找到各命令栏对应的ID号,下文有述。);“Caption”属性,是定义“CommandBarControl”对像的文字标签。
以上实例既然已添加了子菜单,又应该怎样为子菜单添加命令按钮呢?
以下实例在运行时添加菜单,并为菜单添加两个按钮,一个是“CommandBarButton”命令按钮;一个是“CommandBarPopup” 弹出式控件,然后又为“CommandBarPopup” 弹出式控件再添加一个按钮。
修改上述代码为:
Sub 添加菜单与子按钮() Dim ZCD Dim ZA Dim ZAA Dim FCD
Set ZCD = Application.CommandBars(36).Controls.Add(msoControlPopup, , , , True) ZCD.Caption = \添加的菜单\
Set ZA = ZCD.Controls.Add(msoControlButton, 1, , , True) ZA.Caption = \这是命令按钮\
Set ZAA = ZCD.Controls.Add(msoControlPopup, 1, , , True) ZAA.Caption = \这是弹出按钮\
Set FCD = ZAA.Controls.Add(msoControlButton, 1, , , True) FCD.Caption = \分按钮\End Sub
运行效果如何?以上我们做的工作就是“运行时”修改命令栏。那么,如何为我们所自定义的命令按钮指定运行的命令呢?这就要用到按钮的“OnAction”属性。再次修改上述程序,请注意,这次我们修改后的程序是由两段代码组成的——
''''=======程序的主体部份====== Sub 命令按钮的使用() Dim ZCD Dim ZA Dim ZAA Dim FCD
Set ZCD = Application.CommandBars(36).Controls.Add(msoControlPopup, , , , True) ZCD.Caption = \添加的菜单\
Set ZA = ZCD.Controls.Add(msoControlButton, 1, , , True) ZA.Caption = \这是命令按钮\
ZA.OnAction = \删除菜单\
共分享92篇相关文档