设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1040|回复: 0
打印 上一主题 下一主题

[与其它组件] VBA高级开发指南(VBA到底是什么) 作者:KEN ,MIKE

[复制链接]
跳转到指定楼层
1#
发表于 2005-2-20 00:49:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
VBA到底是什么

  1996年夏季,KEN对MICROSOFT的CRAIG SYMONDS作了简短的采访,了解VBA的历史、未来和现状方面的一些细节。

KEN:CRAIG,你的职务是什么?

CRAIG:我是VB小组的项目经理。小组的课题包括VB、VBA、VBS。

KEN:你在这个小组工作多久了?

CRAIG:5年和这个小组同年龄。

(1)VBA的历史

问:首先问一下,VBA是怎么来的,能否讲一下它的历史。

答:VBA是几年前开始的。VBA的前产品是EMBEDDED BASIC,用在ACCESS第一、第二版和前三个VB版本中。它实际上与DOS版本的BASIC有联系,我们把DOS版本的BASIC的一些实现方法转变到WINDOWS中。

问:那么ACCESS和VB间的代码是否有共同之处?

答:是的。整个语言机制是完全贡享的。ACCESS的EMBEDDED BASIC产品有一些扩展,开发VBA的一个原因是要开发一个通用的共享基数。1990年,我们开始了所谓的OBJECT BASIC的项目,这是VBA的原名。其主要目标是加快执行速度,可移植到多个平台和改进基础基数。1993作为EXCEL5的一部分退出。

问:有人说VBA或基于BASIC的某种批命令会成为操作系统本身的一部分,事实是这样吗?

答:在每一个版本中,我们都想把VBA变成操作系统本身的一部分。

(2)VB语言特性及其与OFFICE的集成。

问:是VBA小组推动VBA的改变,还是使用VBA的产品小组作出改变请求?

答:这是一个相互促进的过程。语言的结构性改变是由我们在语言定义中提出的。但我们随时了解每个一程序小组的用户请求,爆震熟悉各个应用程序的可编程性,即面对用户、面对各个小组中程序管理器的可编程性,了解其需求,满足其需求。这是个艰难的决策,VBA技术的客户越多,这种需求就越复杂。我们要综合考核,给出解决问题的一般方法,而不是一次性解决没个问题。

问:但不能针对任何特定产品,是吗?

答:一般来说,是这样的。

问:那么EXCEL加进大量财务功能时,这是纯粹的非VBA问题,你根本不知道吗?

答:是的。VBA是个非常可扩展的结构,从而能够处理各种客户要求。我们的整个运行环境建立在可扩展的机制中。事实上,这可以从产品中看出。我们的运行环境函数,如SIN和COS,通常是由类描述的DLL项目。编译器只是查找类型库并猜出如何关联。很少内在编译器中运行函数。运行环境的工作和其他DLL一样,任何人都可以取一个DLL,提供一些功能和建立它的类型库,它就成为该语言的集成部分。你不能说这些不是内部函数。这样扩展功能非常方便,任何支持VBA的应用程序都可以方便地加进自己的DLL函数和COM对象。主对象模型是通过这个机制加入的,DATA ACCESS OBJECTS之类的加入基数也是通过这个机制加入的,这样就提供了巨大的灵活性。

问:COM接口是双向的吗?你说可以这样与应用程序交谈,应用程序是否也用COM接口响应呢?

答:是的。COM对象可以启动VBA可以收集的事件。然后VBA可以调用这个COM对象的方法和属性。VBA本身也可以向COM接口显示其可以面对其他对象,使这些对象调用VBA。

(3)OFFICE 和 VBA间的通信

问:VBA是如何挂接到OFFICE应用程序?

答:这里有两个问题,一个是OFFICE应用程序要求取得宏表之类的东西和挂接用户接口,我们提供了进行这些工作的接口;另一问题是VBA调用OFFICE应用程序提供的对象模型,前面说过,这是通过自动化进行的。对象出现为COM对象,我们只是COM机制调用这些对象,引用为对象模型建立的类型库,对象即变成语言中的第一类对象,可以直接访问。无论从应用程序运行VBA或是在其他应用程序中运行另一版本的VBA,其作用完全相同,都可以应用期类型库和用同样方法在过程内、过程外和机器间调用,得到功能完全相同。只要引用类型库,COM即处理所有位置透明度。

问:兼容性如何?OFFICE和VB是否有相同的VBA功能?

答:OFFICE版的语言工具和VB5版本、的语言工具有些区别。对VB5中的语言做了一些补充。所有OFFICE都用相同版本的VBA。VB5的功能只是被OFFICE略有增加。

问:有没有人研究PASCAL之类的语言手册,看看PASCAL之类有什么特性可以用于VBA中?

答:有的。我们曾参照PERL之类语言的进行字符串处理,参加竞争性产品中的其他BASIC版本中加入革新特性,参照PASCAL语言加进一写我们能控制的机制。

(4)编译及其对VBA的意义

问:编译对于VBA的意义是什么?人们常把编译看作建立本地执行文件。

答:这不对。

问:但怎么解释编译的真正意义呢?

答:编译是对源码进行语法和语义分析,对产生的代码进行优化,然后产生其输出
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-6 06:52 , Processed in 0.081605 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表