我应该使用C#还是VBA来开发这个应用程序?

3
首先,这个问题并不是要比较C#和VBA的总体优劣。我有一个项目,其中一些部分更适合用C#来完成,而其他部分似乎更适合使用VBA,我正在尝试找出如何最好地组织我的开发方式,因为我没有时间以几种不同的方式构建它,并查看哪个更快。我在这里发布这个问题,因为可能有关于一种语言的某些方面我没有考虑到,这显然使其成为这个项目更有吸引力的选择。
该项目:
1. 通过Web服务查询或刷新与此列表链接的Excel表格的内容,从Sharepoint列表中获取数据集。
2. 使用集合之间字段的不等关系将Sharepoint数据集连接到工作簿文件名的Excel数据集上。这将是多对多关系。
3. 对于每个匹配集中的每个工作簿,将其某些数据导出到不同文件夹中的新工作簿中,以便每个匹配集都在自己的文件夹中。
4. 将所有文件夹压缩成一个归档文件。
第1步似乎.NET或VBA都可以满足要求。第2步似乎更适合使用C#,因为它涉及到使用LINQ进行联接查询,而不是使用大量的VBA循环。第3步涉及Excel数据传输,这使得VBA成为更好的选择,因为我已经阅读了很多帖子,同意VBA比.NET Interop更适合Office操作。第4步似乎最好使用C#,因为我可以使用DotNetZip而不是依赖于shell命令。
但是,混合使用C#和VBA将比单一语言解决方案更不方便维护。所以我不确定应该采取什么方法。

那么得分是2-1,有利于C#,对吧?案子结了! - musefan
1
如果您使用的是VS2012/C# 5.0,那么第4点明显支持C#,因为Framework 4.5现在已经默认支持ZIP。 - igrimpe
2
如果你不能做出决定,那就意味着你没有足够的信息。考虑产品的整个生命周期,并评估每个方面的优点,例如维护、寿命、版本控制、性能以及如果开发人员遭遇意外情况时应用程序会发生什么。 - Andrew Cowenhoven
5
考虑如果开发者中了彩票,应用会发生什么,这是一种更加丰富和积极的思考方式,是吧? :) - Scott Holtzman
2个回答

3
你提到VBA的唯一优点是与Excel交互时的性能提升。
与使用VBA相比,从C#与Excel交互的开销将微不足道,而其他任务的成本会很高:数据检索、计算等等。
如果没有,这意味着你做得很糟糕:例如逐个填充单元格的值或应用格式。
通常情况下,只有在应用程序的维护者没有足够的开发技能使用C#并且不想学习新语言时才应该使用VBA。
这通常是维护者是最终客户的情况,他只知道如何制作基本宏,如果您的C#插件出现任何问题,他将完全无能为力。

这非常有道理。我们确实有其他可用的C#开发人员可以维护此应用程序。 - sigil

3

看到您的要求...

第一部分 - Excel在获取xml数据或进行web服务查询方面没有任何问题。我早在Excel 2002年就这样做了。

第二部分 - 可能你是对的,使用C#语言进行数据集成在语法上可能更好并且可能更加优化 - linq非常方便。但这取决于集成的内容是什么。

第三部分绝对属于VBA领域,所有的更新等都需要在此完成。

第四部分,在c#中这样做可能在UI方面看起来更漂亮,因为它不会打开cmd窗口,但代码实际运行的频率与隐藏他们的容易程度相比如何?

其他要考虑的因素...

除非你进行后期绑定,否则你的C#应用程序将与Excel版本相关联(当你添加引用时包含Excel版本),如果你部署的Excel有一个新版本,那么你必须更新你的C#应用程序,而vba很可能会“正常工作”。

资源也不应该是问题 - 你说你有C#开发人员,任何有资格称自己为开发人员的人都应该能够很快���应主要的过程性语言和他们可能参考的库,无论是C#还是VB.Net - 这不像你在使用F#编写代码一样。

将所有依赖项保持在一起也有很多好处,因为你有一个Excel数据集要合并。

最大的缺点是VBA没有被编译,如果你把它交给别人,他们可能会想去调整。:)

综上所述,我建议采用VBA解决方案,因为它是这个工作最合适的工具。没有任何“阻碍问题”会戏剧性地倾向于哪一方。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接