Microsoft Visual Basic for Application
技术概要
众所周知,Visual Basic系列产品在Microsoft的产品线中占有非常独特的位置,从IE,到Office,乃至Visual Studio系列产品中总要配备一个基于Visual Basic的描述引擎以便进行功能扩展。Microsoft Visual Basic for Application是Microsoft Macro 语言技术,作为Office系列产品的重要组成部分,在Office套件中几乎绝大多数产品都集成了这个语言引擎。在海外软件中许多公司的重要产品也都集成了这个组件,形成了一个庞大的软件链,关于其他国外公司应用VBA引擎的信息,请访问
http://www.summsoft.com,http://vba.summsoft.com/customers/中给出了大多数与Microsoft签订VBA集成协议的软件公司清单。1999年4月,Microsoft发行Visual Basic for Application 6.0 SDK,这个SDK的发布,标志着VBA集成技术走向成熟,最新的Office 2007集成了VBA 6.5。由于早期工作的需要以及个人的兴趣,1999年6月我申请了VBA SDK,VBA SDK是免费的,可以通过
http://www.summsoft.com申请,但基于VBA SDK的产品发布时需要与Microsoft签订商业许可合同。
如果深入考察Visual Basic for Application,我们发现Visual Basic for Application与Visual Basic Script差别极大,但十分接近Visual Basic 6.0,事实上,在语言级别上,Visual Basic for Application与VB6是等价的。按照Microsoft的软件逻辑,如果一个特定的应用系统可以集成VBA,那么这个应用系统基本就是一个“开发环境”,如图:

显示一个集成在特定软件中的VBA IDE。当一个应用系统的对象模型与VBA语言彻底集成后,如上显示的VBA IDE就会充分发挥IDE的编程能力,因此,当开发定制化要求很高的大、中型软件应用时,集成VBA引擎不失为一种有竞争力的考虑。
对C++开发者而言,集成VBA的工作不是一件轻松的工作,需要开发者具备熟练的驾驭MFC/ATL类库的能力。从概念上看,VBA集成框架与常规的MFC/ATL应用框架存在许多差异,磨合这些差异是实现VBA集成的关键;从代码结构上看,基于VBA的代码框架在形式上对开发者而言或多或少存在一些“障碍”,这种障碍客观上提高了入门的门槛。
如果你打算开发带有VBA引擎的软件系统,几个围绕VBA的基本概念是必须掌握的,最重要的概念是1、VBA工程;2、VBA可编程项;3、VBA可编程类;4、VBA APC控件,对高级开发者而言,还有一个非常重要、强大的概念,即:ActiveX Designer,集成在VB环境内的Form设计器、报表设计器就属于ActiveX Designer范畴。
VBA工程,按照Microsoft的构思,一个VBA工程是若干可编程项、可编程类、VBA类模块、代码模块等的集合体,如图所示:

我们看到“VBAProject2”即代表一个VBA工程,这个工程对应的软件对象就是如下图的文档“TangramDoc Demo 3 1”。

在本文的后续文章中,我们将探讨如何在你的软件里集成VBA技术。