|
monicacaca
| 来自北京
我写了很两篇文章专门吐槽这件事情
陈默:项目临近结束,谈谈关于 VSTO 的一些看法陈默:在试图开发 Excel 加载项插件后我不想说话了我不是程序员,我是做数据中心运维的。我在2015年的时候,也是很偶然地从知乎上读到了某个大 V 关于 Excel 的奇淫巧计的高赞答案,里面提到了关于 VBA 的内容,我非常感兴趣。那个时候我的函数用的还不错(毕竟能搞懂并且使用 VLookup 在同事中就已经是大神的存在了)看了那篇文章之后,就开始从公司的线上图书馆找 VBA 的书来读。在几年的时间里面,VBA 为我带来了很大的价值(自动化+摸鱼)。在巅峰时期,我用一个 xlsm 表格完成了一个项目从整理数据到自动发送邮件到200+个客户组的整个工作流程,包括遇到被废止邮箱退信时,通过 AddressBook 寻找对方所在的组邮箱进行 fallback,没有出差错而且节约了大量人工时(之前的印度组的项目资料显示是5个人做的,那几年我们都是我一个人全程安排完)
由 VBA 开始,我作为一个素人,自己学习了很多计算机知识和 .NET 架构的编程。
在听说有 VSTO 之后尝到甜头的我也是立即扑了上去研究。
然后我很快就自闭了。
我来说一下为什么 VSTO 流行不起来吧。
最主要的因素就是它想要替代的前辈,VBA,太过于耀眼和强大。VBA 几乎可以满足 Excel 自动化的一切需求。如果 VBA 满足不了,那么很可能这个活儿就不应该用 Excel 去干。VSTO 想要取代 VBA 几乎是没有意义的事情,除非某天微软脑袋发热把 VBA 给整个取消强制推行 VSTO 或者 Web Add-in。
两者比较起来,VSTO 除了可以方便地进行版本管理,以及解决 VBA 的一些中文字符转码问题之外,并没有能够提供独特的增益,而这两个问题都不是影响 Excel 加载项开发的核心问题。VSTO 部署起来也没有比 VBA 更加方便快捷。如果我们打包 VSTO 项目发给对方,无论是安装中出现的问题,还是版本兼容性,平台兼容性,都远不及发一个 xlsm 或者 xlsa 文件来得简单。
比如我就为我一个事业单位的朋友写过 Excel 的 VSTO,然后发现他们单位用的是 2010 甚至更老的版本。比如我自己夯了一个 VSTO 准备发给同事,结果她和我诉说需求的时候我发现她用的是 Mac,只能作罢。
总结起来两点:
- 和传统的 VBA 相比没有增益很大
- 和 VBA 相比在部署难度和兼容性方面有明显短板
<hr/>另外,微软自家对 Office 的集成功能的开发水平也是我们这些素人不能企及的。以前 Excel 功能没那么全,会有很多社区热衷于开发加载项来补偿。现在 Excel 的自带功能非常丰富,基本上可以涵盖日常的数据处理和呈现的需求。你很难找到必须要自己动手做出一个专门的加载项项目才能完成的需求。
这里再次强调,如果如此丰富的自带功能都无法满足你的需求,那么很可能你不应该去考虑开发 Excel 加载项,你应该考虑用别的工具、软件去满足你这个需求。即便你不得不在 Excel 中整活儿,VSTO 也不会是你的首选项,开发更加快捷,部署更加轻便的 VBA 它不香吗?
这就有点像当年2010年星际争霸2发售,银河编辑器非常强大。你甚至可以使用它来做 FPS 和横板过关游戏。当时大家都觉得星际争霸2自定义会像魔兽争霸3的自定义一样迎来百花齐放的新的春天。结果呢?有能力的人,不屑于用它,会把精力投向更专业的游戏引擎开发;而没能力的人本身也不会去了解它。它没有找到自己的生态位,从一开始的新鲜活力,持续走低,保持着不温不火的状态。可以说暴雪是犯了经验主义的错误。魔兽争霸3编辑器创造的自定义游戏之所以那么火,在当年是由历史客观条件决定的;它在那个时期占据了缺失的生态位。这个历史条件去除以后,虽然银河编辑器更好用,但是却火不了。这个需求没有找准,必然遭到历史进程的冷落甚至是淘汰。
VSTO 带着微软的寄托的满满期望迈入新的纪元,等待它的却是一个 Office 加载项的寒冬。它诞生于世,左顾右盼,但是只看到新纪元拥挤的生态位,并没有留给它的生存空间。 |
|