vba概述

[转贴自:http://www.excelba.com]

一、VB与VBA的发展历史
在认识VBA之前,先简要回顾一下VB以及VBA的发展历史。

1、Microsoft于1991年5月20日在亚特兰大发表了Visual Basic 1.0 for Windows。

2、Microsoft于1992年9月1日发表了Visual Basic for MS-Dos标准版和专业版。如同Windows平台的Visual Basic,该版本提供了简易的图形设计特点,用于设计功能强大、多样的传统应用程序。运用该平台,开发人员只需简单的绘制用户界面,并附加相应的事件代码即可。

3、Microsoft于1992年11月2日发表了Visual Basic 2.0 for Windows标准版和专业版。在该版本中,Microsoft加入了300多项新特性以帮助开发人员创建更快速、更有效以及能利用各种Windows特性的应用软件。

4、Microsoft于1993年5月14日发表了Visual Basic 3.0 for Windows标准版和专业版。在该版本中提供了Microsoft Access Database Engine for Windows 1.1用以浏览大量的资料以及提供OLE(对象链接与嵌入自动识别)2.0的功能,开发各种商业应用软件。同时,还加入了许多新的工具和控件以及增强的自定义控件功能。

5、1993年6月29日Visual Basic被整合于Excel 5.0和Project 4.0中。Visual Basic将属于Windows和Macintosh平台统一的应用程序巨集语言。在当时,一个通用巨集语言和OLE 2.0是Microsoft的两大策略,通过这两个工具,用户可以跨越并整合不同的应用程序、使自动化运行并生成各种自定义解决方案。VBA的灵活性以及它强大的开发引擎使得Visual Basic成为流行的、并受到高度赞誉的程序开发技术。并且,数以十万计的软件增值零售商和第三方开发人员已经加入到了全球的Visual Basic开发团队中,这些开发人员能迅速利用他们现有的Visual Basic知识,开发属于Microsoft Office平台的各种解决方案。
同时,Excel也加入了对多工作表工作簿的支持。

6、1994年11月14日Microsoft在拉斯维加斯的COMDEX发表了Visual Basic 4.0 for Windows,并首次提出了属于32位Windows应用程序的OLE自定义控件(OCXs)——一种属于OLE标准定义的可重复使用的组件。

7、1995年12月12日Microsoft发表了基于Microsoft Windows NT和Windows 95版本的Visual Basic 4.0,在该版本中,不但增强了Visual Basic标准版和专业版的各种特性,而且也推出了一个全新的版本:Visual Basic 4.0企业版,以满足企业和团队的开发需求。Visual Basic 4.0的三个版本中都包含有增强的OLE技术支持、增强的资料浏览技术、开放的视觉化开发环境,以及与Windows 95和Windows NT的无缝整合。

8、1995年12月7日Microsoft发表了Visual Basic Scripting(VBScript),一种属于Visual Basic的Internet的描述语言。VBScript是用于设计Web内容的高性能描述语言,允许开发人员在Web页面链接和自动化各种对象参数,例如OLE对象。VBScript同时也成为整个Internet的免费开发语言规范。

9、1997年2月3日Microsoft发表了Visual Basic 5.0专业版——一个全球快速应用开发平台上最流行的开发工具。在Visual Basic 5.0中,Microsoft加入了许多新的特性以提高Visual Basic的整体性能和增强开发效率,并且能帮助开发人员高效、快速和灵活的解决方案。这些特性包括:Native语言编译、高速资料库浏览和改良的整合开发环境,这也使得Visual Basic 5.0成为当时Basic最为强大的版本。此外,开发人员可以在Visual Basic 5.0中创建ActiveX控件,这项功能使得全球300多万开发人员能快速开发各种元件、执行于Internet、Intranet和主纵架构的应用软件。

10、1997年3月10日Microsoft发表了Visual Basic 5.0控件开发版,通过这个版本,用户能快速方便地开发ActiveX控件,用于各种Internet、Intranet和主纵架构的应用软件。
在Microsoft发布的Excel 97中,开始支持条件格式和数据有效性,新加入了一些菜单和工具栏。在VBA方面,引入了全新的VBA编辑器、用户窗体(Userform)、类模块等。

11、1998年6月15日Microsoft发表了Visual Basic 6.0,一种流行的快速应用软件开发工具。Visual Basic 6.0作为Microsoft的Visual Studio 6.0工具套件之一,它提供了图形化、ODBC或OLE DB实现整合资料浏览工具平台,以及提供了与Oracle和SQL Server的资料库联结工具。Visual Basic 6.0的Web开发特性可以使得开发人员以更方便、组件式的方法,开发各种HTML和动态HTML的应用程序。这些新特性,同时结合性能最佳化、简化应用程序的部署和错误调试以及支持Microsoft服务器技术等特性,使得Visual Basic 6.0成为建立可扩展的企业应用开发平台的理想选择。

12、1998年4月28日Microsoft向第三方的软件供应商通过许可证的模式发表了VBA 6.0和VBA开发工具组件6.0。VBA 6.0作为Office2000的核心组件,已成为快速开发自定义应用程序的强大的开发工具平台。

13、1998年9月2日Microsoft发表了一套全面开发可扩展企业应用的工具套装软件:Visual Studio 6.0。Visual Studio 6.0 包含 Visual Basic 6.0,Microsoft Visual C++ 6.0,Microsoft Visual FoxPro 6.0,Microsoft Visual InterDev Web 6.0 和 Microsoft Visual J++ 6.0。Visual Studio 6.0在1998年的设计师日大会上正式发表,当时有115家全球顶级公司宣布全面支持Visual Studio 6.0。
在1999年发布的Excel 2000中,可使用HTML作为文件格式,开始支持COM加载宏,还具有自我修复的特性,加强了剪贴板和数据透视表方面的功能。VBA也开始使用无模态用户窗体,还加入了一些新的VBA函数。

14、2000年2月15日Microsoft宣布对全球Visual Basic开发人员更深入、紧密的交流和支持。

15、之后,Microsoft发表了支持XML网络服务的.Net平台开发工具技术……

16、随着在2001年3月VBA 6.3版的发布,Microsoft已经增强了VBA 6.0,并包含了新的功能,扩充了开发环境的能力、灵活性和安全性。这使得新的ISVs(独立软件供应商)使用这些新功能可开发出功能更强大的解决方案,诸如基于VBA的多线程工程、开发高效率的加载宏、以及支持数字签名。并且随着Microsoft新的整合技术的创建,ISVs能比以前更快速和容易地整合VBA到他们的应用程序中。
VBA 6.3是Office XP的一个核心组件(现在也包含在Microsoft Outlook、FrontPage、以及Microsoft Access、Excel、Word、PowePoint中)。通过VBA许可程序,Microsoft制造了同样的VBA版本在非Microsoft应用程序中,提供了同样易用且强大的VB到更广范围的新的应用程序领域中。
每个能使用VBA 6.3的产品都包含有支持无模式对话框、完全与VB6.0相同的核心语言、增强的工程口令保护、在IDE中支持加载宏使得程序更有效率等特性。一些宿主VBA 6.3的产品也利用了VBA工程数字签名优势(为防止“宏病毒”)、支持ActiveX控件设计(容易创建复杂的工程组件)、和多线程工程(为更好的执行基于服务器的应用程序)。

17、Office 2003提供了Visual Basic.NET Office系统工具,其几个主要的新功能只能从.NET中进行自动控制,这当然是Microsoft从解决VBA安全性方面的考虑,并且Microsoft的.NET研发队伍正在向替换Office.NET工具进行倾斜。但您不必担心,因为VBA已经有很深的根基且被广为接受,从VBA过渡到.NET将有一个相当长的过程,此外,我们从ExcelVBA中获得的知识也可以更好的帮助我们过渡到.NET框架中。


二、什么是VBA和宏

        VBA是一种强大的开发技术,它能快速定制富客户端(即用XML替代传统的HTML作为服务器端返回给客户端的数据载体)桌面被包装的程序,以及将它们与已存在的数据和系统整合在一起。VBA提供了一组基于VB开发系统的高级编程工具,开发者能够使用它们来利用被包装的应用程序。VBA能够使用户购买直接使用(或买来后只须经过简单的培训或阅读说明书自我培训)的软件,并能定制它以满足用户特定的商业流程,而不是从零开始创建解决方案。这帮助他们节省了时间和费用、降低了风险、提升了他们的编程技术、以及精确地提供用户所需要的功能。

        VBA提供了一个完整的开发环境(IDE),对于使用VB的开发者来说,它们有着相同的元素和功能,包括一个工程窗口、一个属性窗口和调试工具。VBA也支持窗体、创建自定义对话框和ActiveX、以及快速创建用户界面。通过直接整合到宿主应用程序中,VBA提供了一些优势:快速、在过程中执行、与宿主应用程序紧密整合(代码在文档、单元格等之后)、以及不需要运用其它工具创建解决方案的能力。

        包含VBA的软件程序称作可定制的应用程序,即应用程序能被定制以满足特定的商业需要。这类应用程序能使开发者快速创建解决方案,并且只需对最终用户进行较少的培训。对于MIS和商业管理者来说,定制意味着能迅速地开发解决方案并容易推广应用,这与用大量的时间开发新的应用程序和高昂的最终用户培训费用相比,这些解决方案在投资回报和省时方面提供了非常大的商业利益。

        而我们常说的宏是一个指令序列,可以自动执行和完成Excel的某些功能,或使Excel已存在的功能增强,从而提高用户的工作效率、减少差错。而创建宏所使用的脚本语言就是VBA,可以使用VBA创建宏代码,让Excel完成更多的任务。


三、VBA的优势
        正在增加的能使用VBA应用程序的数量提供给开发者更多的应用程序定制和整合的机会,使他们能减少在培训方面的投资并提升VB方面的知识。最终,这些开发者有益于扩展到组织内部,并且选择能使用VBA的应用程序的用户超过从零开始创建解决方案的用户。更多的好处概述如下:

对ISVs(独立软件提供商)的好处

(1)完整且优秀的技术
        许可VBA能使ISVs集中于他们的核心能力,而不是在语言开发。这能使他们提供给用户一个优秀的开发环境,也意味着ISVs不必用不同的工具和语言创建专有的技术。

(2)竞争优势
         VBA为ISVs提供了竞争上的优势,他们为用户设法提供完全的定制和整合能力。能使用VBA的产品,ISVs可以创建扩充功能到他们的核心产品中,并且为用户提供了定制应用程序和添加功能和函数的技术以满足他们的需求。

(3)精简和扩充应用程序
        VBA提供给ISVs一种直接创建基于VBA的向导到他们的产品中,以告诉用户是执行简单的或复杂的操作。在产品发布之后,VBA能使ISVs对他们的核心程序提供基于网络更新,在产品间传递新的功能和函数。

(4)宏记录
        使用VBA和宏记录,ISVs能为最终用户自动完成重复性的工作任务提供一种简单的方式,并且也提供给开发者一种学习应用程序编程模型的简单的方法。

(5)一个极大的开发群体
        通过许可VBA,ISVs能利用数百万已经熟悉VB编程技术的开发者优势,他们能使用ISV已包装的应用程序作为开发平台。ISVs也能利用已经在VB方面的巨大的基础优势:
①培训条件;②支持中心;③书籍和杂志;④会议(研讨会);⑤事件;⑥商业展示;⑦成千上万的ActiveX控件;⑧Web站点
ISVs投入VBA能扩展他们的应用程序和提供工具以满足用户特定的需要。能使用VBA的产品通过提供内置的定制技术,使用户购买一个“买和定制”的选择去建立应用程序。
对开发者的好处
(1)每个VBA宿主应用程序通过一个对象模型开发它的功能,扩展基于ActiveX组件为开发者利用以创建成批的用户解决方案。
(2)开发者能更适应市场,因为他们能在许多应用程序中运用他们的技术。有助于开发者在各种应用程序中只使用一种语言,只需了解该应用程序的对象模型。
(3)复用代码的能力是一个优势,因为相同的VB能在任何地方使用。
(4)VBA能够使得应用程序定制以提供满足用户需求的解决方案。
(5)随着正增长的可利用的能使用VBA的应用程序,开发者现在能整合这些应用程序,以更容易和紧密地共享数据和信息。
(6)可能最明显的是,VBA能使开发者创建以前被禁止的解决方案,因为现在通过整合不同的应用程序或不同的售买者,一些函数或功能是可共用的。
跨越一组更广范围的应用程序范围使用VBA,开发者能定制并整合商业应用程序,并提升他们已有的技术。

对MIS管理者的好处
(1)开发者能遍及大范围的应用程序以运用他们的知识。
(2)MIS管理者能选择买程序代替创建程序,并能使应用程序定制以满足特定的商业需求。
(3)MIS管理者能通过利用在VB方面巨大数量的熟练开发者适应变化资源需求。
(4)通过代码复用能缩减应用程序最终用户的工作积压,产生更快的反应。
(5)开发者容易在跨开发项目间转换。
VBA通过缩减所需要对开发者进行培训的开发环境或语言的数量,也能在帮助MIS管理者和他们的公司在降低培训费用方面起很大的作用。

对基于应用程序解决方案的最终用户的好处
(1)解决方案执行得更快速,这归功于在VBA和宿主应用程序间的紧密整合。
(2)解决方案看起来和工作时就像已经知道的应用程序一样,因此,很少需要再培训。
(3)用户能定制解决方案,例如,关于打印选项或者创建询问。
(4)在解决方案设计过程中,有更多的方式——用户能创建他们想自动生成的输出、报告和文档。

        综上,用户将从所提供的解决方案质量和自定义函数中受益。现今,他们所使用的应用程序已包含了丰富的函数和紧密的整合,并能定制以使他们满足用户需求。


四、VBA与其它的Microsoft开发工具
        Microsoft针对不同的开发者提供了许多开发工具,包括Microsoft Visual C#、Microsoft Visual C++、Microsoft Visual J++、和Microsoft Visual FoxPro开发系统;Microsoft Office开发者;Visual Basic家族;Visual Basic .NET、Visual Basic for Applications(VBA)、Visual Basic Scripting Edition (VBScript)。诸如Visual C#、Visual C++、Visual J++、Visual FoxPro、Visual Basic编程系统等工具支持从零创建解决方案以满足高端特定的市场需求的开发者。Microsoft Office开发者和Visual Basic for Applications(VBA)支持选择购买并定制所包装的应用程序而不是从零开始创建的那些开发者,购买并定制直接使用的软件比从零开始创建解决方案缩短开发的费用和时间。Visual Basic家族被设计成能够提供强大的编程能力,且易于学习和使用的编程语言。
        Visual Basic家族的每个成员都有特定的用途。VBScript被设计成为低内存环境提供轻便的脚本功能,诸如Web浏览器,最常用的是创建HTML网络页面,没有IDE。Visual Basic是创建独立软件组件的世界上最流行的快速应用程序开发工具,包括可执行程序、ActiveX控件和COM组件。最后,Visual Basic for Applications(VBA)是在一个已存在的应用程序中提供与Visual Basic编程系统相同功能的强大的开发工具,能够自动完成、定制和整合应用程序,它是某软件已满足大多数需要的功能后需要再定制该软件的最佳选择。

VB与VBA
VB与VBA的开发环境相似,都源于Basic,所包含的对象级相同,即VB所支持对象的多数属性和方法,VBA也支持,只是在事件或属性的特定名称方面稍有差异。VB与VBA的不同在于不能在一个环境中独立运行VBA,也不能使用它创建独立的应用程序,但VBA是一种完整的程序设计语言,可与那些和它集成的应用程序一起使用,它需要宿主应用程序支持,提供集成开发环境,并对宿主应用程序所包含的对象进行操作以定制应用程序。可以对宿主应用程序的界面进行改善,或者在启动宿主应用程序时隐藏宿主应用程序而显示用户窗体,好像是一个新的应用程序一样,这就是所谓的“封装”。


五、VBA编程语言
1、VBA可完成的主要任务
(1)创建代码中的OLE(ActiveX)对象的实例
(2)创建类
(3)链接到像Access和SQL Server这样的ODBC数据库
(4)与MAPI结合,创建强大的应用程序
(5)与Internet和Intranet结合创建解决方案
(6)创建自定义对话框和窗体
(7)从Windows注册表中存取数据
(8)检查和处理错误
(9)将ActiveX控件引入到应用程序接口中
(10)以最少的编程量和处理时间在启用VBA的应用程序间传递数据
(11)在启用VBA的应用程序中启动另一个启用VBA的应用程序
(12)接制Office应用程序
(13)使任何可以通过键盘、鼠标或者菜单完成的工作自动进行

2、对象模型

        VBA是一种语言,但对于不同的应用程序用VBA所编写的程序代码可能截然不同,这是因为VBA是与应用程序的对象模型对接的,在多数情况下编写的代码所引用的对象会因为宿主应用程序的不同而不同。被引用的对象模型是创建基于VBA的程序的不可缺少的部分,对象模型指明了可以控制的应用程序和功能,这样就能利用VBA访问和改变对象模型的属性值、处理对象模型中的对象所触发的事件并调用对象的方法。

        所有的VBA对象模型都有三类成员,即方法、属性和事件。在早期Excel版本中可用的事件有Click(单击)、Show(显示)和Change(变化)事件,现在的Excel版本中的事件已经被扩充,新的事件如Activate、BeforeDoubleClick、SheetChange、Open、WindowActivate、MouseUp、MouseDown和Calculate等。

3、程序结构 
任何VBA的程序都包含有代码模块、用户界面和类。在此不再详述。
VBA语言也有自已支持的变量和数据类型,此外,所引入的类模块和自动化极大地扩展了其应用。
VBA是一种高级语言,最初由语句组成,不断更新的版本中又引入了函数,然后又引入了对象模型。

4、VBA语言元素
        VBA语言元素可以划分为四个部分:语句、函数、运算符和对象模型。语句构成了语言的基础;函数一般具有返回值,与语句相比有很多优点;运算符用于连接一个或多个语言元素或者形成表达式完成一些运算;对象模型提供了附加的功能并扩展了语言。


六、ExcelVBA及其作用
        Excel与VBA自动结合,成为了一种强大的可定制的应用软件。但VBA中没有加入任何的Excel组件,VBA通过操作Excel的对象模型来显示出它的强大功能。

下面的ExcelVBA的一些主要的作用:

1、插入文本字符串或者公式。如果需要经常在工作表中输入一个很长的名称,可创建一个宏来自动完成。
2、自动执行需要经常使用的过程。如果用户经常要程序化的完成某项工作,不妨使用宏来自动完成。
3、自动完成重复的操作。
4、创建自定义的命令。可以将几个菜单命令组合在一起,这样只需一次就可执行这几个命令。
5、创建自定义工具栏按钮。可以自定义工具栏,在其中加上执行用户自已所编写的宏按钮。
6、为不够熟悉的Excel用户创建简化的程序。例如,可以建立一个十分简单的数据输入模板。
7、开发新的工作表函数。用户可以创建自定义函数来进一步简化公式。
8、自定义对话框以及添加新的菜单命令。
9、创建自定义加载宏。
11、可以与多个应用程序进行交互。例如可引用Access数据库中的数据创建Excel图表,然后将该图表引入到Word文档中。
12、可以导出通用的过程,以供其它用户使用。

一些有争议的问题(以ExcelVBA为例):
1、关于兼容性。这来自两方面,一方面是语言的问题,例如,在中英文版本中使用VBA对菜单栏和工具栏的操作会有所差异;另一方面是版本的兼容性问题,Microsoft的应用软件一般是向下兼容的,这就会使得有些VBA程序在不同的语言环境或不同的版本中会发生运行错误。当然,如果您对Excel了解得很清楚后,应该能避免这些问题。

2、代码的运行速度。相信这也能通过对Excel的熟悉程度,以及利用一些技术和技巧来得以很好的解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值