1、Office是基于COM的。
2、所有与Office的开发都是基于其COM接口,VBA也不例外。
3、VB6开发的Office加载项,与C#、Python等开发的加载项,都是二进制的,类似与控件或DLL,可以加载到Office进程空间。
4、VBA图形化了Office的COM接口,是现成货里功能最全的,使用上也最方便,门槛也最低。VBA与VB共享一套内置函数和虚拟机,无需安装额外的开发环境,生人可从录制宏开始,从现象到本质,一路学起来。拖一拖,点一点,比其他工具更容易激发编程兴趣。其他开发工具可以直接借鉴VBA来了解Office的COM接口。
5、VBA真正牛逼的,不是VBE的智能提示,也不是人家通俗易懂的语法,更不是所谓花枝招展的神技能,而是VBE的人机交互。
VBE的解释器,将Windows的人机交互发挥到了极致,至今VS、VIM等编辑器,都只能望其项背。如果不理解Windows的人机交互,就无法理解Linux门下众多伸手党傻吊般的自信,当然更无法理解VBA为啥比很多码手年龄都大,还宝刀未老,说了N遍要被死,就是老不死。
VBA慢?人家慢是有道理的,你使用Office的GUI元素时,后台要处理若干窗口消息之类的不说,人家可是趁热给你翻译源码(人家不是编译,你却拿编译的货跟解释比速度,要脸不),还要随时等你发号施令(暂停,修改,继续,再停,再改...,你VSTO来个?你Python也来个撒?VB6被很多人死硬了,但是人家却可以!因为从4.0,VB就是VBA了,VB的真身是VBA,记住了哈)。
6、VB6只适应32位系统?搞笑,提个线索:64位Office上的VBA使用64位API,改了好多代码?
说VB不行的,是你不晓得咋拿锄头。锄头是啥?锄头就是C。VB就是C在Window上的图形化定制版本。
7、这下晓得了哇,再总结下:
Office加载项,类似于动态加载DLL那样的功能,是二进制的。非VBA要和Office捆绑部署,都要通过加载项模式。
VBA才是Office环境下,正儿八经的开发语言。欢迎关注本号,获取更多VB/VBA/Office高阶开发知识,也可关注其他地方同名号,获取更多不同维度的内容。