Microsoft Visual Basic for Application技术概要

news/2024/7/5 17:28:38
 
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技术。
 



http://www.niftyadmin.cn/n/3656123.html

相关文章

mongodb 多表关联查询

需求 mongodb库中有三张表,需求:查询表A中的数据,但这些数据的threadId字段,不能存在于表B和表C中,做一个过滤查询,需要分页和排序。 mongodb 命令实现 {"aggregate": "__collection__&q…

WPF,一次洗牌……

WPF,一次洗牌……昨天,在CSDN上看一篇孟岩的文章,谈及WPF带来的震撼,其实,WPF对今天的开发者来讲,已经不是很新的概念了,在MSN里,也与部分朋友交流对WPF的看法。最早体验WPF,也许是在…

Tangram开源版本发布

Tangram开源版本发布经过一段难忘的忙碌,Tangram的第一个完整版本杀青了。回想来到北京的几年,可谓感慨万千,开发产品是心志的磨练,这话没错!经历身体与身心的煎熬,使我深刻的意识到勇者有畏,但…

【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)

前言 这是我在Dcloud发布的插件-最完整Mqtt示例代码(解决掉线、真机调试错误等问题),经过整改优化和替换Mqtt的js文件使一些市场上出现的问题得以解决,至于跨端出问题,可能原因有很多,例如,合法…

implement 和 extends 的区别

extends:拓展; 扩大范围 implement:使生效 ; 贯彻 ; 执行 重点: extends 用在同类之间。比如:classC 继承 classA,interFaceC 实现 interFaceA。implement 用在非同类之间。比如:classC 实现 interFaceA的…

让Internet Explorer成为你的软件集成平台

让Internet Explorer成为你的软件集成平台(一)最近一段时间,经常与朋友们探讨与浏览器相关的技术问题,多少年来,浏览器的问题一直是软件界的热点,无论是体验、操作习惯、安全,还是技术等问题&am…

@Async 异步不起作用

一、异步接口实现 java中的异步接口实现比较简单,主要有两步: 1、在ContentServiceApplication上添加EnableAsync。2、在需要异步的接口上添加Async接口。 // 第一步EnableAsync public class ContentServiceApplication {public static void main(St…

让Internet Explorer成为你的软件集成平台(二):献给VB Developer

Microsoft Visual Basic 6.0是Microsoft的一个经典作品,尽管争议颇多,个人认为VB6是一个十分优秀的开发工具。做为一款1998年的产品,VB6至今还被许多人所喜爱,笔者就是其中之一。针对COM组件开发,VB6非常方便&#xff…