
VBA(Visual Basic宏语言)
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程式中执行通用的自动化(OLE)任务的程式语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软体。也可说是一种套用程式视觉化的Basic 脚本。该语言于1993年由微软公司开发的的应用程式共享一种通用的自动化语言--------Visual Basic for Application(VBA),实际上VBA是寄生于VB应用程式的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。
基本介绍
- 中文名:Visual Basic宏语言
- 外文名:Visual Basic for Applications
- 释义:Visual Basic的一种宏语言
- 功能:扩展Windows的套用程式功能
- 发行时间:1993年
- 语言属性:应用程式一种通用的自动化语言
- 简称:VBA
- 具备功能时间:1994
- 作业系统:Microsoft Visual,Mac OSX
- 启发语言:Visual Basic,QuickBASIC
用途
由于微软Office软体的普及,人们常见的办公软体Office软体中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软体的套用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现複杂逻辑的统计(比如从多个表中,自动生成按契约号来跟蹤生产量、入库量、销售量、库存量的统计清单)等。
VBA6

掌握了VBA,可以发挥以下作用:
1.规範用户的操作,控制用户的操作行为;
2.操作界面人性化,方便用户的操作;
3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;
4.实现一些VB无法实现的功能。
5.用VBA製做EXCEL登录系统。
6.利用VBA可以Excel内轻鬆开发出功能强大的自动化程式。
区别
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创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO POWERPOINT 中用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倍,而是数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的组织,以控制其複杂度。
Visual Basic for Applications(简称VBA)是新一代标準宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特徵,没有面向对象的程式设计概念和方法。而VBA 提供了面向对象的程式设计方法,提供了相当完整的程式设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程式代码。这样用户可以容易地将日常工作转换为VBA 程式代码,使工作自动化。因此,对于在工作中需要经常使用Office 套装软体的用户,学用VBA 有助于使工作自动化,提高工作效率。另外,由于VBA 可以直接套用Office 套装软体的各项强大功能,所以对于程式设计人员的程式设计和开发更加方便快捷。
基础
Visual Basic 的应用程式版(VBA)是Microsoft 公司长期追求的目标,使可程式套用软体得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft 可程式套用软体所共享。在没有VBA 以前,一些套用软体如Excel、Word、Access、Project 等都採用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门去学习,它们之间互不兼容,使得套用软体之间不能在程式上互联。拥有一种可跨越多个套用软体,使各套用软体产品具有高效、灵活且一致性的开发工具是至关重要的。VBA 作为一种新一代的标準宏语言,具有上述跨越多种套用软体并且具有控制套用软体对象的能力,使得程式设计人员仅需学习一种统一的标準宏语言,就可以转换到特定的套用软体上去,程式设计人员在编程和调试代码时所看到的是相同的用户界面,而且VBA 与原套用软体的宏语言相兼容,以保障用户在代码和工作上的投资。有了VBA 以后,多种应用程式共用一种宏语言,节省了程式人员的学习时间,提高了不同套用软体间的相互开发和调用能力。
VBA 相关书籍

在Office 2000 中,宏语言VBA 适用于所有应用程式,包括Word 、 Excel、PowerPoint、Access、Outlook 以及Project。在Office 97 的各应用程式中,新增了Visual Basic 编辑器。这样,用户无论是在Excel 中,还是在Word 中以至是在Access 中建立和管理VBA 都具有统一的方法和标準。
在介绍如何利用VBA 提高工作效率之前,首先介绍一些与VBA 有关的基础知识。
VB 与VBA
VBA 是基于Visual Basic 发展而来的,它们具有相似的语言结构。Visual Basic 是Microsoft 的主要图形界面开发工具,VBA 5.0 (亦即VBA 97)则是Visual Basic 5.0 的子集。Visual Basic 是由Basic 发展而来的第四代语言。Visual Basic 作为一套独立的 Windows 系统开发工具,可用于开发Windows 环境下的各类应用程式,是一种可视化的、面向对象的、採用事件驱动方式的结构化高级程式设计语言。它具有高效率、简单易学及功能强大的特点。VB 的程式语言简单、便捷,利用其事件驱动的编程机制,新颖易用的可视化设计工具,并使用Windows 应用程式接口(API)函式,採用动态程式库(DLL)、动态数据交换(DDE)、对象的连结与嵌入(OLE)以及开放式资料库访问(ODBC)等技术,可以高效、快速地编制出 Windows 环境下功能强大、图形界面丰富的套用软体系统。
Visual Basic 程式很大一部分以可视(Visual)形式实现,这意味着在设计阶段就可以看到程式运行的萤幕画面,用户可以在设计时能够方便地改动画面图像、大小、颜色等,直到满意为止。VB 的用户可以是缺乏Windows 及C 语言开发经验的专业软体人员,也可以是具有一定Windows 开发经验的专业人员,VB 的可视化编程方法使得原来繁琐枯燥、令人生畏的Windows 应用程式设计变得轻鬆自如、妙趣横生。以往的Windows 应用程式开发工具在设计图形用户界面时,都是採用编程的方法,并伴随大量的计算任务,一个大型应用程式约有90%的程式代码用来处理用户界面,而且在程式设计过程中不能看到界面显示的效果,只有在程式执行时才能观察到,如果界面效果不佳,还需要回到程式中去修改。Visual Basic 提供了新颖的可视化设计工具,巧妙地将Windows 界面设计的複杂性封装起来,程式开发人员不必再为界面设计而编写大量程式代码,仅需採用现有工具按设计者要求的布局,在萤幕上画出所需界面,并为各图形对象设定属性即可,VB 自动产生界面设计代码,这样便将事先编制好的控制项可视地连线到一起,构成一个随时可调整的界面。
VBA 不但继承了VB 的开发机制,而且VBA 还具有与VB 相似的语言结构,它们的集成开发环境IDE(Intergrated Development Environment)也几乎相同。但是,经过最佳化,VBA 专门用于Office 的各应用程式。VB 可运行直接来自Windows 95 或NT 桌面上的应用程式,而VBA 的项目(Project)仅由使用VBA 的Excel、Word、 PowerPoint 等称为宿主(Host)的Office 应用程式(Application)来调用。
WordBasic 和 Visual Basic
在 Word 中,为完成具体的任务,所用的是WordBasic 命令。 WordBasic 是从VBA 扩展而来的一种专用于处理Word 自动功能的语言,下面介绍它们在概念上的区别和它们的宏的相互转换。WordBasic 和 Visual Basic 在概念上的区别
VBA 和WordBasic 之间主要的区别是 WordBasic 语言包含由大约 900 个命令组成的一张平面列表,而 Visual Basic 则包含了由对象组成的一个分层结构,每个对象都可提供一组特定方法和属性(与 WordBasic 中的语句和函式相似)。大多数 WordBasic 命令在任何时候都可运行,而 Visual Basic 只在特定的时候提供有效对象的方法和属性。
注意
本文提到的Visual Basic 如果不加特别说明,都是指Visual Basic For Applications。
对象是 Visual Basic 这一宏伟大厦的基石,在 Visual Basic 中进行的几乎任何操作都与修改对象有关。Word 的任何元素(如文档、段落、域、书籤等),都可以用 Visual Basic 中的对象来代表。与平面列表中的命令不同,部分对象只能通过其他对象才能加以访问。例如,可以通过不同的对象(如 Style、Selection 和 Find 对象)来访问 Font 对象。
套用加粗格式的编程任务就表明了两种程式语言之间的区别。下面的 WordBasic 指令对所选内容套用加粗格式。
下面的示例是 Visual Basic 语句,也是对所选内容套用加粗格式。
Selection.Font.Bold = True
Visual Basic 不包含 Bold 语句和函式,却有一个名为 Bold 的属性(属性通常指一个对象的特性,例如大小、颜色,或者是否是加粗)。Bold 是 Font 对象的一个属性。同样地,Font 是返回一个 Font 对象的 Selection 对象的一个属性。按照下面的对象结构,可以生成指令,以将加粗格式套用于所选内容。
Bold 属性是一个 Boolean 类型、可读写的属性。这意味着可以将 Bold 属性设定为 True 或 False(真或假),也可返回当前值。下面 WordBasic 指令的返回值表明是否将加粗格式套用于所选内容。
x = Bold()
下面的示例是 Visual Basic 语句,返回所选内容的加粗格式的状态。
x = Selection.Font.Bold
要在 Visual Basic 中执行一个任务,就需要确定合适的对象。例如,如果用户想套用【字型】对话框中的字元格式,可使用 Font 对象。然后需要确定如何理顺从 Application 对象到 Font 对象的 Word 对象结构,以找到包含需要修改的 Font 对象的对象。在确定了该对象的路径之后(例如,Selection.Font),可使用 Visual Basic 编辑器中的【对象浏览器】、【帮助】或【自动列表成员】之类的功能来确定可将什幺属性和方法套用于该对象。
将 WordBasic 宏转换为 Visual Basic
宏可使任务自动化,如果在 Word 中重複进行某项工作,可用宏使其自动执行。宏是将一系列的 Word 命令和指令组合在一起,形成一个命令,以实现任务执行的自动化。用户可创建并执行一个宏,以替代人工进行一系列费时而重複的 Word 操作。事实上,它是一个自定义命令,用来完成所需任务。
宏的一些典型套用如:加速日常编辑和格式设定、组合多个命令、使对话框中的选项更易于访问、使一系列複杂的任务自动执行等。
Word 提供了两种创建宏的方法:宏录製器和 Visual Basic 编辑器。宏录製器可帮助用户开始创建宏。Word 在 VBA 程式语言中把宏录製为一系列的 Word 命令。可在 Visual Basic 编辑器中打开已录製的宏,修改其中的指令。也可用 Visual Basic 编辑器创建包括 Visual Basic 指令的非常灵活和强有力的宏,这些指令无法採用录製的方式。
当第一次进行任何操作时,Word 2000 将自动转换 Word 6.x 或 Word 95 模板中的宏。
转载请注明出处海之美文 » VBA(Visual Basic宏语言)