我知道从VBA代码调用.NET代码是可能的,但是为什么VBA仍然存在?我能想到的唯一原因是遗产。
我只需要对一个Scripting.Dictionary进行排序,所需的代码数量令人恐惧。
IDE看起来类似于2003。还有很多小细节让你抓狂(比如更改行,因为编译错误而收到警告)。或者,如果您打开多个电子表格,它会混合到您的"VBAProject“中,这是非常令人困惑的。
整个模块/类模块/表单划分实际上并没有那么糟糕,但我每次都会直接用表单编写逻辑,或者有一个处理所有事情的大型模块。
为什么我不能按Alt+F11,然后黑进C#呢?
发布于 2014-08-04 15:02:23
Microsoft有多种方法让您以编程方式更改/增强默认行为。VBA是一种经过测试、验证和广泛传播的用于in脚本的战斗语言.很多办公室的人都知道并使用VBA,而不知道像C#这样更复杂的编程语言。如果客户在学习了一门新语言或其他任何东西之后,不得不重写大量具有宏观功能的旧文档,从而完成业务上的关键任务,那么办公室的销量就不会那么高了。向后可兼容性是一个关键的特性!
Office的完整.NET堆栈可能需要一些依赖项管理(dll:s等),并且很容易对简单的任务进行管理--它很难成为轻量级脚本的替代方案。VSTO为您提供了使用C#的能力,但代价是插件开发周期更重。
微软的一位程序经理曾写过关于这个这里的文章。很明显,为了编写小脚本,VBA现在和将来都是存在的。
发布于 2014-08-04 15:02:29
答案并不是严格意义上的“遗产”。答案是VBA既不是VB6也不是VB.Net:它是VBA。一种独立但相关的语言。如果将VBA替换为VB.Net,将不可避免地破坏许多文档。
用VB.Net取代VBA几乎肯定会导致大量主要产品用户的数据丢失--这不是件好事。
他们对VBA的目标市场不是程序员。
发布于 2014-08-04 20:33:23
如果您考虑到人们购买Office的主要原因是为了保持与所有现有文档的兼容性,其中许多文档中都有宏和VBA,那么微软将非常勇敢地对待那些用户,就像对待VB6人群一样,告诉他们吸干它,开始用.NET编写代码,看看#1用户语音请求!
我想,LibreOffice的人会欢呼自己进入无意识,尽管!
VBA是为了提高Office的生产力,而不是“编程”。你需要从你的文档中获得更多能量的那一天是你雇佣一个程序员重写所有东西的日子。我想另一个原因是为什么Visual宏也不是.NET --认为devenv4 COM对象与VBA没有太大的不同。
https://softwareengineering.stackexchange.com/questions/252253
复制相似问题