1、Office是基于COM的。
2、所有与Office相关的开发都是基于其COM接口,VBA也不例外。
3、VB6开发的Office加载项,与C#、Python等开发的加载项,都是二进制的,类似DLL,可以加载到Office进程空间。拿二进制的加载项和VBA比性能,都是耍流氓。
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,记住了哈)。VBA慢不是因为解释器,而是你不知道如何让VBA语句变成二进制!嗯,绝对是这个原因!
VBA咋快?自然是编译的最快,编译的代码越底层越快!废话,这不VBA没法编译嘛?编译了还是VBA吗?其实VBA是支持编译的,因为VB就是VBA啊。只需要改动1项注册表,在VBE中就可以编译VBA代码了。
所以,VBA开发Office的正确方式是解释和编译的组合,既能兼顾人机交互,又能保证性能。更为关键的是,VBA编译的代码,不仅没有加载项启用的麻烦,还可以多线程和异步哦!
6、VB6只适应32位系统?搞笑,提个线索:64位Office上的VBA使用64位API,改了好多代码?
说VB不行的,是你不晓得咋拿锄头。锄头是啥?锄头就是C。VB就是C在Window上的图形化定制版本。
7、这下晓得了哇,再总结下:
Office加载项,类似于动态加载DLL那样的功能,是二进制的。非VBA要和Office捆绑部署,都要通过加载项模式。
VBA才是Office环境下,正儿八经的开发语言。欢迎关注BtOfficer,获取更多VB/VBA/Office高阶开发知识,也可关注其他平台同名号,获取更多不同维度的内容。
版权归原作者 BtOfficer 所有, 如有侵权,请联系我们删除。