浅谈Excel开发(1) Excel开发概述2013-12-31做Office相关的开发工作快一年多了,在这一年多里,在插件的开发中遇到了各种各样的问题和困难,还好同事们都很厉害,在和他们的交流讨论中学到了很多的知识。目前Office相关的开发资料是比较少的,最最开始的时候,我看的是一本英文资料,然后再就是MSDN上面去提问了。所以我想写一点东西,让大家也少走一些弯路。这篇文章就简要介绍一下Office开发的一些相关的知识,使大家对这个有一个大体的了解。首先来看一看Office 的开发方式。一 Office开发方式1 VBA (Visual Basic Application)VBA是一种Visual Basic的宏语言,它应该是最早的Office提供定制化的一种解决方案,在1994年发行的Excel 5.0版本中,就具备了VBA的宏功能。从名字上似乎可以看出他是VB的一个子集,和Visual Basic不同,VBA是一种宿主型语言。由于那个时候Visual Basic非常火, VBA取得了很大的成功,无论是专业的开发人员,还是刚入门的非开发人员,都可以利用VBA完成简单或复杂的需求。现在在一些办公环境中,VBA用的非常多,比如国内比较著名的ExcelHome论坛,上面就有很多关于Excel VBA的讨论,而且VBA还能够调研Com组件里面的一些方法,在其他的Office开放方式中,如VSTO或者SharedAddin中,VBA有时候可以辅助完成某些功能,如RTD函数,UDF函数的调用,专用模板的开发,动画效果的演示等等。不光是Office,有很多其他的软件业比如比较有名的ArcGIS,CorelDraw等软件,都提供了VBA的定制化解决方案。

但是他也有很多缺点。VBA本身拥有很多的局限性,比如缺少一些常用的类型,调试起来不方便,VB语言虽然简单,但是现在又很多的开发者都使用的是.NET,VB的一些语法可能很多人不适应。再就是VBA是一种脚本类型的解释型的语言,在安全性比如源代码容易被破解,就像Javascript保密性不好一样,在执行效率方面没有一些编译型解决方案来的快。举个例子,比如说,我们可以把我们的自定义函数使用VBA来编写,然后存储为.xla文件,这样在Excel中就可以调用我们的这些函数了。但是由于VBA是解释型的语言,就像JavaScript那样,每次运行都要边解释边运行,而不是像其他一些语言,在编译成二进制后,就能直接加载运行。所以可以将我们的自定义函数写到类库然后注册,或者直接使用C++,将函数写到xll中,这样效率和安全性方面要比VBA方式要好,这里只是稍微提一下,后面的文章会详细介绍。