开发集成Microsoft Visual Basic for Application的应用系统(一)
Microsoft Visual Basic for Application(以下简记为VBA)是Microsoft Office的核心组件之一,作为一个嵌入式二次开发引擎,VBA被集成到许多著名的大型软件系统之中(例如:AutoCAD 2002、Core Draw等),集成VBA的一个重要原因是类似Microsoft Office类型的商业软件取得巨大的成功,一个众所周知的事实是Word, Excel,PowerPoint,以及其他Office程序共享一个公共的二次开发环境,即VBA。本文介绍VBA集成的基本概念,在后续的文章中将陆续介绍如何在你的应用程序中集成VBA的基本技术。
Microsoft VBA建立在COM技术基础之上,如果你打算让你的应用系统支持宏语言或描述语言,以便你的客户可以充分定制化你的应用系统,或可以进行深度的二次开发,集成VBA是一种聪明的选择,通过集成VBA,你的系统可以与Microsoft Office共享同一个二次开发环境。VBA在语言级别上等价于VB 6.0,在运行机制上,VBA是以伪代码(Microsoft P-Code)形式运行,VB6可以编译为机器码(依赖于VB运行时库),除编译的差别外,二者最大的差异是所支持的Form库,VBA的Form来自Fm20.dll,本质上这类Form是一种特殊类型的ActiveDesigner(一种类似于VB6集成的报表设计器类型的可编程对象)。
(集成在用户系统中的VBA环境)
VBA的基本想法是,将程序对象映射为对应的VBA对象,基本的VBA对象有以下几种:
1、 VBA工程:在集成VBA的应用系统中,VBA工程有两个重要角色,一、VBA工程是VBA可编程对象的容器(所有可编程对象的集合),二、VBA工程是实现VBA对象存储的基础。
2、 VBA可编程项:是一个特定程序对象在VBA环境中的对应对象,首先这类对象必须是一个COM对象(必须支持事件),其次这个对象必须完成特定的程序功能。例如:你可以将一个特定的MFC对象实现为一个VBA可编程项,如第一图中Normal工程中的的TestView。可编程项仅有一个运行时事例。
3、 VBA可编程类:是一个特定程序对象在VBA环境中的对应对象,首先这类对象必须是一个COM对象(必须支持事件),其次这个对象必须完成特定的程序功能。例如:你可以将一个特定的MFC多文档子窗口对象实现为一个VBA可编程类,可编程项可以有多个运行时事例。
4、 VBA可编程控件:VBA可编程项的子对象。
5、 ActiveDesigner:一种特殊的VBA工程项,可以有可是化的设计机制,一个典型的例子是VBA中的Form,下图显示一个用户开发的ActiveDesigner:
(ActiveDesigner在编程环境中的应用)
VBA对象结构图如下:
一个集成VBA系统的应用程序:
(未完待续,如果你有兴趣在你的系统中集成VBA技术,请与本人联系,我的e-mail: sunhuizlz@yeah.net)