visualbasicforapplications(vba)是一种visualbasic的一种宏语言,主要能用来扩展windows的应用程式功能,特别是microsoftoffice软件。也可说是一种应用程式视觉化的basicscript。1994年发行的excel5.0版本中,即具备了vba的宏功能。
什么是excel应用程序?利用excel和vba为平台,开发出来的电子数据表即称excel应用程序。
什么是宏?宏是一系列的命令与函数,存储于visualbasic的模块中,并在在需要执行该项任务时可随时运行。如果经常在重复某项任务,那么可以用宏自动执行该任务。
上面是vba的三个概念,那为什么要用vba?为什么要以excel为平台来开发程序?
这里说几个简单的理由!
1、当使用excel为平台时,你的程序就可以利用excel现有的功能,可以站在一个小巨人的肩膀上,这就可大大减少开发的周期。
2、几乎所有的电脑中都有excel,也有大量的人正在使用excel,但并不是每个人都会使用vba,当你了解vba后,以前的很多问题就可能在这就迎韧而解。
3、excel开发程序分发很容易,只要电脑中有excel,基本不需要在其它的文件,简简单单的复制与粘贴,就完成了文件的分发。
4、vba的语言是相对容易学的语言,很容易上手,如果你熟悉vb,那你发现它们在语言方面是相通的,而如果你对excel比较了解,那你也就很容易理解excel的各种对象了。
最后,任何东西都不是万能的excel与vba也是一样。
如,excel是一个电子表格程序,如果你把它强加成数据库软件是不公平的,在处理较少的数据,比如几千行的,用excel是比较理想的,而大量的数据时,你就应该考虑用数据库了,比如microsoftoffice中的access等,或者将两个相结合。
充分了解excel的基本知识与vba的编程技巧,你就会从中获得乐趣,让我们一起来吧,走进vba的世界中。
vba的用途
由于微软office软件的普及,人们常见的办公软件office软件中的word、excel、access、powerpoint都可以利用vba使这些软件的应用更高效率,例如:通过一段vba代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。
掌握了vba,可以发挥以下作用:
1.规范用户的操作,控制用户的操作行为;
2.操作界面人性化,方便用户的操作;
3.多个步骤的手工操作通过执行vba代码可以迅速的实现;
4.实现一些vb无法实现的功能。
vba和vb的区别包括如下几个方面:
1.vb是设计用于创建标准的应用程序,而vba是使已有的应用程序(excel等)自动化
2.vb具有自己的开发环境,而vba必须寄生于已有的应用程序.
3.要运行vb开发的应用程序,用户不必安装vb,因为vb开发出的应用程序是可执行文件(*.exe),而vba开发的程序必须依赖于它的父应用程序,例如excel.
4.vba是vb的一个子集。
尽管存在这些不同,vba和vb在结构上仍然十分相似.事实上,如果你已经了解了vb,会发现学习vba非常快.相应的,学完vba会给学习vb打下坚实的基础.而且,当学会在excel中用vba创建解决方案后,即已具备在wordaccessoutlookfoxproprowerpoint中用vba创建解决方案的大部分知识.
*vba一个关键特征是你所学的知识在微软的一些产品中可以相互转化.
*vba可以称作excel的遥控器.
vba究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.
此外,如果你愿意,还可以将excel用做开发平台实现应用程序.
office取得巨大成功的一个重要原因就是vba,使用vba可以完成很多事情,基于excel、word的vba小程序不计其数。
vba程序员很多是业余程序员,正因为业余,解决的却是工作中需要解决的问题;所以,vba程序大多都是只是在部门内部或个人使用的小工具。
集成了vba的其他应用程序也很多,但真正能为程序增色的不多。
大多数人看到了vba可以自动化一个程序,可以扩展已有程序,但没有看到在office中,vba代码可以是录制的,而不是写出来的,带来的好处是,学习曲线变得非常缓。如果没有宏录制功能,要熟悉某个office组件的对象模型,绝非一日之功。
以arcgis为例,arcgis扩展必须使用arcobject,不管是使用vba也罢,vb也罢,还是c++也罢。但同时,arcobject的学习不是一天两天可以搞定,对于业余程序员,要使用vba来扩展arcgis,几乎没有可能;专业程序员又不屑使用vba;而对于公司,如果要基于arcobject来扩展arcgis,选择vba意味着源码的保护很困难。所以,arcgis的vba就如同鸡肋。
不过,学习ao的时候,使用vba比使用其他语言要容易一些,写几行代码,然后直接运行测试结果,这种交互式的学习应该是最好的学习方法。
arcgis以及ao与office相比,还有一个很大的差别,就是arcgis缺乏中等粒度的对象,例如word和excel的range对象。对于office开发,可以在对底层小粒度对象一无所知的状况下做很多事情,这就是抽象的力量。常人可以处理的复杂度是有限的,面对数十个对象和几百个对象,后者需要付出的努力不是10倍,而是数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的组织,以控制其复杂度。
visualbasicforapplications(简称vba)是新一代标准宏语言,是基于visualbasicforwindows发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而vba提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。vba易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为vba程序代码。这样用户可以容易地将日常工作转换为vba程序代码,使工作自动化。因此,对于在工作中需要经常使用office套装软件的用户,学用vba有助于使工作自动化,提高工作效率。另外,由于vba可以直接应用office套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。
vba基础
visualbasic的应用程序版(vba)是microsoft公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的microsoft可编程应用软件所共享。在没有vba以前,一些应用软件如excel、word、access、project等都采用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门去学习,它们之间互不兼容,使得应用软件之间不能在程序上互联。拥有一种可跨越多个应用软件,使各应用软件产品具有高效、灵活且一致性的开发工具是至关重要的。vba作为一种新一代的标准宏语言,具有上述跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计人员仅需学习一种统一的标准宏语言,就可以转换到特定的应用软件上去,程序设计人员在编程和调试代码时所看到的是相同的用户界面,而且vba与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。有了vba以后,多种应用程序共用一种宏语言,节省了程序人员的学习时间,提高了不同应用软件间的相互开发和调用能力。
在office2000中,宏语言vba适用于所有应用程序,包括word、excel、powerpoint、access、outlook以及project。在office97的各应用程序中,新增了visualbasic编辑器。这样,用户无论是在excel中,还是在word中以至是在access中建立和管理vba都具有统一的方法和标准。
在介绍如何利用vba提高工作效率之前,首先介绍一些与vba有关的基础知识。
vb与vba
vba是基于visualbasic发展而来的,它们具有相似的语言结构。visualbasic是microsoft的主要图形界面开发工具,vba5.0(亦即vba97)则是visualbasic5.0的子集。visualbasic是由basic发展而来的第四代语言。visualbasic作为一套独立的windows系统开发工具,可用于开发windows环境下的各类应用程序,是一种可视化的、面向对象的、采用事件驱动方式的结构化高级程序设计语言。它具有高效率、简单易学及功能强大的特点。vb的程序语言简单、便捷,利用其事件驱动的编程机制,新颖易用的可视化设计工具,并使用windows应用程序接口(api)函数,采用动态链接库(dll)、动态数据交换(dde)、对象的链接与嵌入(ole)以及开放式数据库访问(odbc)等技术,可以高效、快速地编制出windows环境下功能强大、图形界面丰富的应用软件系统。
visualbasic程序很大一部分以可视(visual)形式实现,这意味着在设计阶段就可以看到程序运行的屏幕画面,用户可以在设计时能够方便地改动画面图像、大小、颜色等,直到满意为止。vb的用户可以是缺乏windows及c语言开发经验的专业软件人员,也可以是具有一定windows开发经验的专业人员,vb的可视化编程方法使得原来繁琐枯燥、令人生畏的windows应用程序设计变得轻松自如、妙趣横生。以往的windows应用程序开发工具在设计图形用户界面时,都是采用编程的方法,并伴随大量的计算任务,一个大型应用程序约有90%的程序代码用来处理用户界面,而且在程序设计过程中不能看到界面显示的效果,只有在程序执行时才能观察到,如果界面效果不佳,还需要回到程序中去修改。visualbasic提供了新颖的可视化设计工具,巧妙地将windows界面设计的复杂性封装起来,程序开发人员不必再为界面设计而编写大量程序代码,仅需采用现有工具按设计者要求的布局,在屏幕上画出所需界面,并为各图形对象设置属性即可,vb自动产生界面设计代码,这样便将事先编制好的控件可视地连接到一起,构成一个随时可调整的界面。
vba不但继承了vb的开发机制,而且vba还具有与vb相似的语言结构,它们的集成开发环境ide(intergrateddevelopmentenvironment)也几乎相同。但是,经过优化,vba专门用于office的各应用程序。vb可运行直接来自windows95或nt桌面上的应用程序,而vba的项目(project)仅由使用vba的excel、word、powerpoint等称为宿主(host)的office应用程序(application)来调用。
wordbasic和visualbasic
在word中,为完成具体的任务,所用的是wordbasic命令。wordbasic是从vba扩展而来的一种专用于处理word自动功能的语言,下面介绍它们在概念上的区别和它们的宏的相互转换。wordbasic和visualbasic在概念上的区别
vba和wordbasic之间主要的区别是wordbasic语言包含由大约900个命令组成的一张平面列表,而visualbasic则包含了由对象组成的一个分层结构,每个对象都可提供一组特定方法和属性(与wordbasic中的语句和函数相似)。大多数wordbasic命令在任何时候都可运行,而visualbasic只在特定的时候提供有效对象的方法和属性。
注意: 本书提到的visualbasic如果不加特别说明,都是指visualbasicforapplications。
对象是visualbasic这一宏伟大厦的基石,在visualbasic中进行的几乎任何操作都与修改对象有关。word的任何元素(如文档、段落、域、书签等),都可以用visualbasic中的对象来代表。与平面列表中的命令不同,部分对象只能通过其他对象才能加以访问。例如,可以通过不同的对象(如style、selection和find对象)来访问font对象。
应用加粗格式的编程任务就表明了两种编程语言之间的区别。下面的wordbasic指令对所选内容应用加粗格式。
下面的示例是visualbasic语句,也是对所选内容应用加粗格式。
selection.font.bold=true
visualbasic不包含bold语句和函数,却有一个名为bold的属性(属性通常指一个对象的特性,例如大小、颜色,或者是否是加粗)。bold是font对象的一个属性。同样地,font是返回一个font对象的selection对象的一个属性。按照下面的对象结构,可以生成指令,以将加粗格式应用于所选内容。
bold属性是一个boolean类型、可读写的属性。这意味着可以将bold属性设置为true或false(真或假),也可返回当前值。下面wordbasic指令的返回值表明是否将加粗格式应用于所选内容。
x=bold()
下面的示例是visualbasic语句,返回所选内容的加粗格式的状态。
x=selection.font.bold
要在visualbasic中执行一个任务,就需要确定合适的对象。例如,如果用户想应用【字体】对话框中的字符格式,可使用font对象。然后需要确定如何理顺从application对象到font对象的word对象结构,以找到包含需要修改的font对象的对象。在确定了该对象的路径之后(例如,selection.font),可使用visualbasic编辑器中的【对象浏览器】、【帮助】或【自动列表成员】之类的功能来确定可将什么属性和方法应用于该对象。
将wordbasic宏转换为visualbasic
宏可使任务自动化,如果在word中重复进行某项工作,可用宏使其自动执行。宏是将一系列的word命令和指令组合在一起,形成一个命令,以实现任务执行的自动化。用户可创建并执行一个宏,以替代人工进行一系列费时而重复的word操作。事实上,它是一个自定义命令,用来完成所需任务。
宏的一些典型应用如:加速日常编辑和格式设置、组合多个命令、使对话框中的选项更易于访问、使一系列复杂的任务自动执行等。
word提供了两种创建宏的方法:宏录制器和visualbasic编辑器。宏录制器可帮助用户开始创建宏。word在vba编程语言中把宏录制为一系列的word命令。可在visualbasic编辑器中打开已录制的宏,修改其中的指令。也可用visualbasic编辑器创建包括visualbasic指令的非常灵活和强有力的宏,这些指令无法采用录制的方式。
当第一次进行下列任何操作时,word2000将自动转换word6.x或word95模板中的宏。