VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - MSOffice开发工具--VBA
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:11153, 日期:2001-06-21
MSOffice开发工具--VBA

--------------------------------------------------------------------------------
p>一、VBA的发展过程
  在Office中包含着一种加强Office功能的语言,即为Basic语言。经过发展,在Office97 中,Word、Excel、Access、PowerPoint四个软件都有了自己的程序设计语言,分别称为Microsoft WordVisualBasic、MicrosoftExcelVisualBasic、MicrosoftAccessVisualBasic、Microsoft PowerPointVisualBasic。通常统一称为VBA。在Outlook中的开发语言为VisualBasicScripting Edition,而不是一个完全的VBA。不过,VisualBasicScriptingEdition是VBA的一个较小 的子集,它与VBA兼容。当然,有一些VBA支持的特性,VisualBasicScriptingEdition并不 支持。
二、VBA开发特点
  1.MicrosoftOffice对象模型

  VisualBasic是一种面向对象的开发语言。VBA 将MicrosoftOffice中的每一个应用程序都看成一个对象。每个应用程序都由各自的Application 对象代表。

  在Word中,Application对象中包容了Word的菜单栏、工具栏、Word命 令等的相应对象,以及文档对象等等。菜单栏对象中包容了所有的菜单及菜单命令。工具栏对 象中包容了各种命令按钮。文档对象中则包容了所有的文字、表格、图像等文档组成部分的相 应对象。文档对象是MicrosoftWordVisualBasic中的主要对象。

  在Excel中, Application对象中包容了Excel的菜单栏、工具栏等的相应对象,以及工作表对象和图表对 象等等。工作表对象和图表对象是MicrosoftExcelVisualBasic中的主要对象。

  在Access 中,Application对象中包容了Access的菜单栏、工具栏等的相应对象,以及报表对象和窗体 对象等等。报表对象和窗体对象是MicrosoftAccessVisualBasic中的主要对象。

  在Power Point中,Application对象中包容了PowerPoint的菜单栏、工具栏等的相应对象,以及演 示文档对象等等。演示文档对象是MicrosoftPowerPointVisualBasic中的主要对象。

  2. 基于对象的开发

  (1)使用MicrosoftOffice对象

  Office已经具有 了强大的功能,Office的对象模型使得可以使用MicrosoftOffice中的对象来完成自己的工 作。程序员可以不必浪费时间开发自己的组件,只需充分地利用Office的功能。Office开发 者可以在Office的基础上进行自己的开发,而不必一切从头开始。例如,Office开发者可以使 用Word的拼写检查器,而不必自己来开发一个拼写检查器。

  (2)用户创建对象

  Office 开发者可以在Office对象 唇ㄗ约旱亩韵螅嚎梢源唇ㄗ约旱牟说ズ凸ぞ呃福?砑拥絆ffice 的对象集合中;可以创建一个窗体,并且在窗体中添加控件,等等。例如,在Word中,可以往自 动更正的词库中添加自己的词条。

  3.VBA开发Office的功用

  有人 也许觉得Office的功能已经足够强大了,是否还有必要使用VBA来开发Office。的确,即使根 本不用编写一句语句,Office就可以完成用户所能遇到的各种任务。但是,人们对效率的追求 是永不满足的,这就是使用VBA来开发Offic的原动力。

  (1)VBA可以使Office任 务自动化

  在使用Office的过程中,往往要遇到一些重复性的系列工作,特别是在 处理大批量的文档或数据时。通过录制宏或使用VisualBasic编写宏,使一系列的工作只需 要一个指令便能完成,这就成倍地提高了工作效率。

  (2)VBA可以定制Office满 足自己的需要

  Office是一个功能异常庞杂的软件包,对某一用户来所说,许多 命令可能一辈子也用不着,而另外一些命令可能得经常使用。有时候,功能复杂反而显得多余。

  另外,Office的外观显得异常的繁杂,许多用户面对如此繁杂的界面往往手足无 措。

  通过VBA可以设置自己的界面,把自己经常用到的菜单命令和工具栏放置到 显眼的地方,隐藏一些不常用的菜单或工具栏,并且,可以把自己所编写的宏设置为菜单命令 或设置为工具栏中的命令按钮,方便了使用。

  并且,可以根据自己的需要来定制Office 的功能,满足自己的需要。

  (3)VBA可以增强Office的功能

  Office 的功能虽然强大,但它不可能考虑到所有情况,而且情况是千变万化的,各种情况都有特定的 要求。

  通过VBA可以增强Office的功能,以处理各种各样的任务。例如,可以设置Word 拼写检查的词库;可以往词库中添加新的词语;可以设置自动更正,设置自己经常遇到的误拼 等。

  (4)VBA可以增强Office与用户的交互

  在Office中,可以利用Visual Basic创建窗体,并在窗体中添加控件等用户接口元素。通过用户接口,应用程序可以得到用 户的请求,并对其作出响应。

  (5)VBA可以集成Office的功能

  Office 不是几个软件的简单组合,而成为一个有机的整体发挥巨大的作用。VisualBasic提供了集 成Office的功能的一种手段。

  通过OLE(对象的链接和嵌入)和DDE(动态数据交换) 技术的使用可以集成Office的功能。例如,利用VisualBasic,可以在Word文档中链接Excel 数据表,调用Excel来对该数据进行处理。在Excel中处理该数据表,得到结果也要刷新Word文 档中的数据表,保持了数据的更新。这时的文档确切地说应该是一个复合文档。

  OLE 自动化技术则提供了一种在应用程序中控制源文档的方法。OLE自动化的优点是,在单一的环 境中工作,同时可以使用其他应用程序的功能。

  在MicrosoftOffice环境中,利 用VisualBasic开发应用程序时,可以利用OLE自动化组合MicrosoftOffice中的多个应用 程序,建立自动化应用程序。MicrosoftOffice提供了大量的材料,只需把它们拼凑起来。

三、 简单开发实例:
字符统计程序


  有时候,要对某字符在文档中的出现次数进行统计。要完成这一任务,可以在Word中开发 一程序来较快地统计。
  打开要统计的文档后,在文本框中输入要统计的字符,如“OK!”,然后选择是否区分大小 写,单击“确定”按钮,便可以进行统计了。

  设计该程序的步骤如下:

  1 .新建一窗体Userform1,窗体的caption属性设置为“字符统计”。窗体中包容以下控件:

  复 选框控件CheckBox1Caption=“区分大小写"

  命令按钮控件CommandButton1 Caption=“确定"

  标签控件Label1Caption=“输入您要统计的字符:"

  2.在单击命令按钮控件CommandButton1后便执行统计工作,代码如下:

Private SubCommandButton1_Click()
DimcountofappearasInteger
Selection.WholeStory
WithSelection
.Find.ClearFormatting
With.Find
.Text=UserForm1.TextBox1.Text
IfUserForm1.CheckBox1.Value=TrueThen
.MatchCase=True
Else
.MatchCase=False
EndIf
.Execute
EndWith
EndWith
IfNotSelection.Find.Found()Then
MsgBox“未找到"
ExitSub
EndIf
WhileSelection.Find.Found()
countofappear=countofappear+1
Selection.Find.Execute
Wend
MsgBox“找到了"&countofappear&“个"
EndSub

  讲解:首先用语句Selection.WholeStory选定全文。

  使用Selection.find.execute 语句进行一次对字符的查找操作,如下:

WithSelection
.Find.ClearFormatting
With.Find
.Text=UserForm1.TextBox1.Text
IfUserForm1.CheckBox1.Value=TrueThen
.MatchCase=True
Else
.MatchCase=False
EndIf
.Execute
EndWith
EndWith

  上述语句中使用Find对象的ClearFormatting方法作用是清除任何为 进行查找或替换操作所指定的格式,相当于“编辑”菜单“查找和替换”对话框中的“不限定格 式”按钮。

  另外,MatchCase属性设置查找操作是否区分大小写。

  如果 没有找到,则弹出一消息框,告知没有找到,并退出子程序,语句为:

IfNotSelection.Find.Found() Then
MsgBox“未找到"
ExitSub
EndIf

  如果找到一处,然后进行下一次查找,以下如此循环,每找到一次countofappear 变量便加1,来代表指定字符在文档中出现的次数,语句为:

WhileSelection.Find.Found()
countofappear=countofappear+1
Selection.Find.Execute
Wend

  在程序中Selection.Find.Found()函数用来知道是否找到指定的字符。

  最后,弹出一个消息框来告知字符在文档中出现的次数。