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提供了大量的材料,只需把它们拼凑起来。 三、
简单开发实例:
设计该程序的步骤如下: 1 .新建一窗体Userform1,窗体的caption属性设置为“字符统计”。窗体中包容以下控件: 复 选框控件CheckBox1Caption=“区分大小写" 命令按钮控件CommandButton1 Caption=“确定" 标签控件Label1Caption=“输入您要统计的字符:" 2.在单击命令按钮控件CommandButton1后便执行统计工作,代码如下: Private
SubCommandButton1_Click() 讲解:首先用语句Selection.WholeStory选定全文。 使用Selection.find.execute 语句进行一次对字符的查找操作,如下: WithSelection 上述语句中使用Find对象的ClearFormatting方法作用是清除任何为 进行查找或替换操作所指定的格式,相当于“编辑”菜单“查找和替换”对话框中的“不限定格 式”按钮。 另外,MatchCase属性设置查找操作是否区分大小写。 如果 没有找到,则弹出一消息框,告知没有找到,并退出子程序,语句为: IfNotSelection.Find.Found()
Then 如果找到一处,然后进行下一次查找,以下如此循环,每找到一次countofappear 变量便加1,来代表指定字符在文档中出现的次数,语句为: WhileSelection.Find.Found() 在程序中Selection.Find.Found()函数用来知道是否找到指定的字符。 最后,弹出一个消息框来告知字符在文档中出现的次数。 |