最近学习了李永富老师的《VSTO开发入门教程》,跟之前的VBA知识对比下,有很多感触。

简单比较

说说VBA

VBA(Visual Basic for Application)是通过VB语言来操作OFFICE文档、程序以及其他软件产品的技术,使软件的用户扩展性理论上无穷大。

Office中VBA需要启用开发工具,即可录制宏,使用宏,插入模块等,非常的方便,尤其是自定义函数,不需要任何其他操作,只需要关心函数本身的逻辑,用户可以通过录制宏来学习任何操作的代码实现方法,极易成长。

但同时,VBE(Visual Basic Editor)(就是office自带的原生编辑器)真是上世纪九十年代既视感,习惯了IDEA这种强大的IDE的同学肯定感觉在记事本里面写代码一样。

聊聊VSTO

VSTO是一门新技术(相对于VBA)了,其实就是用.Net的形式来写Office程序。

当然了.Net不仅仅支持VB,也支持C#,这意味着,你既可以用熟悉的VB来写(忽略VB.NET和VBA细微的语法差异),也可以用更强大的C#来写,相比较而言,可以用C#来实现更复杂的需求,比如多线程,比如面向对象(真正的面向对象,VB更像是面向过程,不过支持面型对象而已)。

中间操作遇到一个问题,即VBA的方法,函数,C#中不一定有,或者使用方法与场景不同,这就是.Net的长处了,.Net是一门技术,不是一门语言,你可以直接在C#中使用VB的库,就像使用C#自己封装的库一样(比Java的JNI方便的不要不要的)

但是,需要装一个VS,具体版本取决于目标office程序,如我的office是2016,就需要装一个VS2017版本,大学时就体验过微软的豪华,现在装一次VS2017,真是有感触,豪华永无止境啊,上来就是10G+。不过宇宙级IDE总是对得起它的空间的。

话说回来,一个简单的文档操作,至于这么大动干戈吗? 
生命在于折腾!

其他操作方式

其实除了微软提倡和支持的VBA和VSTO两个方式外。其他很多编程语言都可以直接操作Office文档。

因为Office文档本身就是一个xml文件,xml本身又是一个文本文档,或者说,只要能读写文件,处理字符串的变成语言,理论上都支持操作Office文档。

操作office文档本质就是操作一个复杂的XML文件,底层使用xml文档操作技术(如DOM,SAX)封装一些常用方法,属性,类库,呈现出来一个框架或是技术,成为这个编程语言操作Office的利器。

现在操作Office文档生态较好的语言有,JavaScript、Java、Python。

生态最好的当然是C#了。为什么有C#?它不是本身就支持吗?,C#除了使用VSTO技术操作Office文档外,还可以直接通过控制台或是Form或是Web项目using相关命名空间,即可直接操作Office。

既然有这么多语言可以支持,那为什么要用VS,要用C#.Net呢?

  • 兼容性 
    微软没有开放Office的API接口,其他语言类库是直接凭经验解析,很可能有些老版本,或是特殊一点的文件,又或者新文件解析出错,.Net原汤化原食。
  • 可扩展性 
    从数据区到功能区,到各种操作窗格,用户控件,真的是其他非MS系语言可以比拟的。
  • 学习成本 
    用户不需要整天去开着某个类库的官方文档来学习,想知道某个操作如何用代码实现,直接录制宏,查看宏代码(VB),文档对象模型都是大致相同的,然后用C#的方式实现,遇到问题,F1查看帮助。

工具推荐

VS可以直接使用最新版(现在是2017)的社区版本,免费且完全够用。

习惯IDEA或是(其他JB系列产品)的,可以装上ReShaper插件,使用IDEA快捷键和编辑方式。

习惯eclipse也可装上asEclipse,体验visual studio for eclipser

比较结论

小需求用VBA

毕竟轻量

大需求用VSTO

强大

文档级别需要自定义函数尽量用VBA

VBA简单,VSTO自定义函数过程太繁琐

文档级别不需要自定义函数用VSTO

不自定义函数,C#写起来就是比VB舒服(个人感觉)

外接程序界别用VSTO

这个不多说了,可以直接打包做成EXE给别人。

保证兼容性优先,使用VBA

大家都是盗版,拿什么保证客户机装了vsto for office

从VBA到VSTO的一些想法相关推荐

  1. Office 2007的VBA,以及Office开发的随想

    Office 2007中,最为关心的是微软对VBA的态度,是抛弃.搁置,还是持续的改进.看到了dudu试用Office 2007的帖子,今天也下载了Office 2007 beta2,安装试用了一下. ...

  2. 为什么写技术博客对新人如此重要

    由于明年项目业务的扩展,所以在现有的团队中,我还要再招 2-3 名Office开发的新成员作为正式的专职员工,在此聊聊我在招聘过程的感受,和大家交流些经验,特别是「为什么写技术博客对新人如此重要?」. ...

  3. 读书笔记-Office 365开发入门指南

    作者博客 Office 365 开发概览系列 - 随笔分类 - 陈希章 - 博客园  https://www.cnblogs.com/chenxizhang/category/967796.html ...

  4. 为什么写技术博客对新人如此重要?

    最近看到一篇文章,站在招聘者的角度提出了自己对这个问题的看法,主要是以下几个方面: 台湾和大陆的对比 首先谈谈台湾情况,Programmer 在台湾不叫程序员,而是程式设计师,从搜索引擎找台湾程序员, ...

  5. 为什么写技术博客对新人如此重要?

    由于明年项目业务的扩展,所以在现有的团队中,我还要再招 2-3 名Office开发的新成员作为正式的专职员工,在此聊聊我在招聘过程的感受,和大家交流些经验,特别是「为什么写技术博客对新人如此重要?」. ...

  6. 为什么写科技博客是情侣如此重要?

    因为明年扩建工程作业.因此,现有的团队.我也想租 2-3 名字Office新成员的发展作为一个正式的全职员工,在这次演讲中,我觉得在招聘过程,和大家分享一些经验,特别是「为什么写科技博客是情侣如此重要 ...

  7. Office 365开发者的前端必备课程

    这篇文章其实不仅仅是写给Office 365开发者的,但对于广大的Office 365开发者来说确实相当重要的.这里提到的Office 365开发者,包括了Office Add-ins,SharePo ...

  8. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

    今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光和不 ...

  9. 《Office 365开发入门指南》上市说明和读者服务

    写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...

  10. Office 365也是.NET Core应用开发新战场

    最近有幸阅读了陈希章花了一年时间为国内开发者贡献的<Office 365 开发入门指南>. 虽然早期接触过SharePoint的开发,2007年之后就再也没有接触SharePoint的开发 ...

最新文章

  1. Debug不崩溃Release版本崩溃的一种原因
  2. php连接mySql,加密函数
  3. 2018.12.05 codeforces 948C. Producing Snow(堆)
  4. ulua/tolua中timer.lua和event.lua的使用(Luaframework)
  5. IDEA 真牛逼,900行 又臭又长 的类重构,几分钟搞定
  6. 【双十二】电商们的文案大战,猫狗快被玩坏了!
  7. php oci 11g.dll下载,Oracle oci.dll
  8. Flask之WTForms
  9. mysql efbbbf_MySQL中修理特殊不可见uft8字符 - trim
  10. 转载:公司招聘中不能说的秘密
  11. 127.0.0.1和0.0.0.0和本机IP的区别
  12. qt引入txt文件_QT 读取txt文件的几种方法
  13. SVN checckout 失败:Error: REPORT request on '/svn/signature/!svn/me' failed 的解决办法
  14. Matlab在工业机器人中的运用,基于MATLAB的工业机器人建模与仿真.docx
  15. ubuntu安装原生迅雷,让下载成为简单
  16. 求最大公约数和最小公倍数的方法:
  17. vimscript:编写Vim脚本
  18. vue安装及创建运行
  19. Flink优化02--状态及Checkpoint调优
  20. Refused to execute inline script because it violates the following Content Security Policy directive

热门文章

  1. 小组作业:学生信息管理系统需求分析
  2. python正交表运用
  3. 忆旧:关于“天网防火墙”的破解
  4. android同花顺布局,同花顺首发 Android平板电脑炒股高清版
  5. LAMP架构部署论坛
  6. Android平板软件推荐,Android平板电脑必备软件推荐
  7. 华为鸿蒙系统自带什么输入法,搜狗输入法华为鸿蒙系统OS2.0版下载-搜狗输入法华为鸿蒙版v10.15.2 手机版-腾飞网...
  8. adb 驱动 fastboot 驱动 win10
  9. 产品经理的自我修养——用显微镜看微信产品设计
  10. 安卓应用出海指南--发布到Google Play