1、Excel VBA及其开发环境 在学习了Excel的一些高级操作以及有关宏的相关知识之后,就可以正式进入到Excel VBA(简称VBA)的学习阶段了。本章首先向读者讲解有关VBA的一些基础知识,包括VBA的基本概念、VBA的历史和VBE开发环境等内容。VBA概述 在前面学习的内容当中,读者对Excel VBA(在本书中,以后将简称VBA)应该已经有了一些简单的了解。本节中将系统地向读者讲解有关VBA的一些基础知识,使得读者对VBA有个比较深刻的理解,为以后学习VBA的各种知识打下良好的基础。VBA的概念VBA是Visual Basic For Application的缩写,在Office系列
2、办公软件当中,VBA又分为Excel VBA语言、Word VBA语言以及PowerPoint VBA语言等。VBA是用Visual Basic(简称VB)来开发应用程序的一种语言,而Excel VBA则偏重于面向Excel对象(如工作簿、工作表以及单元格等)进行编程,也就是说Excel VBA是通过用代码编写的命令和使用过程来操作工作表或单元格等对象,进而在Excel中完成自动化操作的相关设置。可以将Excel VBA看作是VB的一个分支,VBA继承了VB很大一部分编程方法。VB中的语法结构、变量的声明以及函数的使用等内容,在VBA中同样可以正常地进行使用。在20世纪90年代早期,关于应用程
3、序自动化的问题仍是充满挑战性的领域。当时,对不同应用程序的自动化,人们都不得不学习不同的自动化语言。例如,自动化Excel需要调用Excel的宏语言,而自动Word又必须使用Word Basic等。于是,微软决定开发出来的应用程序共享一种通用的自动化语言VBA。这样,对于微软所有的应用程序,都可以使用VBA来操作其自动化。VBA的历史早在1985年,Excel就被用在苹果的Macintosh电脑上,在1987年被移植到PC机当中。在PC机时代之前,曾经有过很多成功的工作表软件,如VisiCalc、Quattro Pro和Multiplan等。VisiCalc是最早的工作表软件产品,但是很早就被
4、淘汰了。Multiplan是微软的产品,也是Excel的前身,由于其功能强大并且使用方便,很快就占领了整个市场。最初的Excel宏语言要求代码保存在一个后缀为.xlm的单独文件中。因此后来也被称为XLM宏或者Excel4宏。XLM宏语言包括函数调用以及上百个内建函数,使用户可以通过编程控制Excel的各种操作。但是XLM宏语言的在使用上相当的复杂,也正因为如此吸引了一些具备很强编程能力的人创建复杂的程序,但是远离了广大的一般用户。学习XLM宏语言需要很长的一个过程。另一方面,最初的PC版Excel运行于Windows平台,而对于当时的硬件水平来说,能够运行Window系统的PC机一般都比较的昂
5、贵,一般家庭用户无法负担,这也是阻碍VBA发展的一大原因。基于上述各种原因,微软大胆的决定要使用VBA整合所有Office产品的宏语言。1993年发布的Excel5是第一个包含VBA语言的产品。随后,其他的Office系列产品,包括Word、Access、PowerPoint、FrontPage、Visio、Project和Outlook全部都采用了VBA作为宏语言。VBA的工作原理VBA是Office对象和VBA程序代码之间相互关联和交流的桥梁。VBA代码是由VB语言来编写的,其变量定义及语法结果与VB语言完成相同,当使用VBA代码来调用Office对象时,需要有VBA程序接口,而这种调用是
6、通过对象模型自动化实现的。VBA的主要任务是通过编写程序代码来操作Office对象,从而完成特定的任务操作。当使用VBA代码调用Excel的某个属性时,如果在VBE环境中解释执行VBA代码时,发现有对Excel这个属性的调用,则就自动通过对象模型调用该属性,然后通过方法操作该属性,这样就实现了VBA代码和Office对象之间的通信连接。VBA的工作原理如图3.1所示。VBA与VB 前面讲过,VBA的程序代码是由VB语言来编写的,其语法结构与变量定义方式与VB完全相同。但是,VBA与VB之间还是有一定的区别,本节中将主要讲解VBA和VB之间的一些区别,然后讲解安装VBA环境和帮助文档方面的相关知
7、识。VBA与VB之间的区别VBA与VB之间是紧密相关的,VBA是VB的一个分支,也可以将VBA理解为“寄生在Office产品中的Visual Basic”。然而,很多用户总是混淆VB和VBA的概念。实际上,VBA和VB之间存在着一定的区别,具体的内容包括以下几个方面。(1)设计目的不一样。VB用于设计创建标准的应用程序,而VBA则是使已有的应用程序(Excel等)自动化。(2)开发环境不同。VB具有自己的开发环境,而VBA必须寄生于已有的应用程序(如Excel等)当中。(3)编译执行文件不同。VB执行文件的扩展名为.exe。VB由于内含编译器,因此可制作可执行文件。VBA则由于内含于offic
8、e系列各软件内,且不提供编译器,故VBA程序只可依附于各软件而执行,无法制作可执行文件。(4)运行方式不同。要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件,而VBA开发的程序必须依赖于它的“父”应用程序。(5)可用的资源不同。对于程序内可引用的资源,包括对象、函数等。VB在此方面的资源要比VBA多很多。从专业的角度来看,VB是较专业的程序设计语言,而VBA的目的则是强化Office应用系统,故在可用资源方面,VBA不及VB。安装VBE开发环境和帮助文档在正式应用VBA编写程序之前,应该了解一下VBE开发环境以及如何安装VBE开发环境。有关VBE开发环境将在下一
9、章中进行详细的介绍,本节中将主要讲解如何安装VBE开发环境及其帮助文档。如果用户在安装Office时使用的是默认的安装方式,则Excel的VBE开发环境就已经被安装好了。否则,可按照下面的步骤进行安装。VBE开发环境介绍 在了解了有关VBA的一些基础知识之后,下面介绍一下VBE开发环境,目的是使读者在编写VBA程序之前首先熟悉Excel VBA的编程环境,以便在以后的学习过程中能够熟练地编写VBA程序。用来编写Excel VBA代码的工具称为Visual Basic Editor,简称VBE,Visual Basic编辑器环境指的就是VBE开发环境。切换到VBE开发环境在前面讲解的操作中已经讲
10、解了如何进入到Visual Basic编辑器(以下称为VBE开发环境)当中。本节中将详细讲解进入到VBE开发环境中的几种方法。通过在Excel工作簿中按下Alt+F11快捷键进入到VBE当中。通过单击“开发工具”选项卡下的【Visual Basic】命令进入到VBE当中。单击“开发工具”选项卡下的【宏】按钮,在弹出的“宏”对话框窗口中选择要执行的“宏”,然后单击窗口中的【编辑】按钮进入到VBE当中,如图3.7所示。VBE工程窗口VBE的工程窗口中包括工作簿、工作表、窗体、模块、类模块等对象。通常情况下,可以将每一个打开的Excel工作簿看作默认名称为“VBAProject(工作簿名称)”的一个
11、工程,一个新建的Excel工作簿包含有一个Excel对象,在默认的情况下,在该对象中包含3个工作表对象和一个工作簿对象,如图3.9所示。在新建一个工作簿之后,还可以在工程中添加窗体、模块和类模块等对象,添加了这些对象之后的工程窗口如图3.10所示。VBE属性窗口 VBE属性窗口中显示的是工程窗口中Miscrosoft Excel对象或窗体的属性。例如在工程窗口中选择窗体“UserForm1”对象时,则在属性窗口中将显示窗体“UserForm1”对象的相关属性,如图3.13所示。通过在属性窗口中可以实现不使用程序代码就可以设置对象的相关属性。VBE代码窗口 代码窗口的作用是用来编辑和存储Exce
12、l VBA程序的代码,在工程窗口中的任何一个对象都有自己的代码窗口。例如在VBE环境中双击模块名称,就可以查看该模块的相关程序代码,如图3.15所示。代码窗口的特征 在上一节中讲解了代码窗口的结构及其作用,本节中将讲解代码窗口中的几个重要的特征。1自动调节输入属性和方法的大小写 2自动显示成员列表 3自动显示参数信息 4添加代码注释对象浏览器窗口对象浏览器窗口的作用是为VBA编程者提供使用各种对象方法和属性的方法。在VBE环境中,单击“视图”下的“对象浏览器”子菜单项或者直接按下F2键,将弹出对象浏览器窗口。对象浏览器窗口主要由搜索结果列表框、类列表框、成员列表框和详细数据显示区域4部分组成,
13、如图3.25所示。自定义VBE开发环境提高工作效率VBE是Excel VBA程序设计的开发环境,用户可以按照自己的编程习惯去设置这个开发环境。设置合理的开发环境,不但可以加快程序编写的速度,而且还可以提高编写代码的正确率。自定义VBE开发环境是在VBE开发环境中的“选项”窗口中实现的。打开Excel工作簿,进入到VBE开发环境当中,然后选择“工具”菜单下的“选项”子菜单,此时弹出“选项”窗口,如图3.28所示。示例:第一个VBA程序在了解了VBE开发环境之后,就可以开发Excel VBA程序了。本节中将通过开发一个简单的程序来向读者讲解开发Excel VBA程序的具体实现过程。实现在Excel工作簿打开时出现一个对话框。举一反三本章主要讲解了Excel VBA及其开发环境(VBE开发环境)的相关知识。是否能够熟练地了解VBE开发环境是学习Excel VBA编程的关键。如果想更好地使用Excel VBA进行编程,除了应该掌握本章的相关内容外,还应该掌握以下几个方面的内容。深刻理解VBA与VB之间的区别与联系,理解VB的优点和VBA的不足之处。能够熟练地使用Excel的帮助文件。在编程时能够熟练地使用对象浏览器查询应用程序当中的对象及其属性的用法。能够定义适合自己的开发环境,在自己定义的VBE开发环境中开发程序。能够独立开发简单的Excel VBA程序。