我应该用C#或VBA开发这个应用程序吗?

时间:2012-12-14 16:08:13

标签: c# vba project-planning

首先,这个问题并不是对C#与VBA整体优点的争论。我有一个项目有一些更适合C#和其他更适合VBA的部分,我正在试图找出如何最好地构建我的开发,因为我没有时间以几种不同的方式构建它看哪一个更快。我在这里发布这个问题是因为我可能还没有考虑过一种语言,这显然使它成为这个项目更具吸引力的选择。

项目:

  1. 从Sharepoint列表中获取数据集,通过Web服务查询或刷新链接到此列表的Excel工作表的内容。

  2. 使用集合字段之间的不等式关系将Sharepoint数据集连接到工作簿文件名的Excel数据集。这将是一个多对多的。

  3. 对于每组匹配项中的每个工作簿,将其部分数据导出到不同文件夹中的新工作簿,以便每个匹配集都在其自己的文件夹中。

  4. 将一个档案中的所有文件夹压缩。

  5. 步骤1似乎是.NET或VBA都会令人满意。第2步似乎更适合C#,因为它涉及一个连接查询,使用LINQ而不是一堆VBA循环更容易实现。第3步涉及Excel数据传输,这使得VBA成为更好的候选者,因为我读过很多帖子同意VBA比.NET Interop for Office操作更快。第4步似乎在C#中会更好,因为我可以使用DotNetZip而不必依赖shell命令。

    但是,与单语言解决方案相比,C#和VBA的混合使用起来不太方便。所以我不确定我应采取什么方法。

2 个答案:

答案 0 :(得分:2)

你提到的唯一支持VBA的点是与Excel交互时的性能提升。

与其他任务的成本相比,C#与Excel交互的开销与VBA相比可以忽略不计:数据检索,计算......

如果不是这意味着你做得很糟糕:例如:填写值或逐个应用单元格格式。

作为一般规则,如果应用程序的主要人员没有足够的开发技能来使用C#不想学习新语言,则应该只使用VBA。

当维护者是最终只知道如何制作基本宏的客户端时,通常就是这种情况,如果你的C#addin有任何问题,那么它将完全无能为力。

答案 1 :(得分:1)

看看你的要求......

第1部分 - Excel在获取xml数据或进行Web服务查询时没有任何实际问题。我在Excel 2002中做了那样的事情。

第2部分 - 可能你是正确的,数据集成在语法上更好,可能在C#中更好地优化 - linq非常方便。但这取决于整合是什么。

第3部分绝对是vba领域,所有更新等。

第4部分在c#中执行此操作可能会因为不打开cmd窗口而看起来更漂亮 - 但代码实际运行的频率与隐藏它们的容易程度有关。

其他考虑因素......

除非您进行后期绑定,否则您的C#应用​​程序将与Excel版本绑定(当您添加引用时包含excel版本)。如果您部署了新版本的Excel,那么您必须更新您的C#应用​​程序,其中vba最有可能“正常工作”。

资源采购也不应该存在问题 - 你说你有C#开发人员,任何有能力称自己为开发人员的人都应该能够很快适应他们可能参考的主要程序语言和库。网络开发可以同样在C#或VB.Net中 - 它不像你在F#中编写它。

由于您要合并excel数据集,因此将所有依赖项保持在一起还有很多要说的。

vba最大的缺点是,如果你把它交给其他人,他们可能会想要修补它们。 :)

考虑到所有事情,我建议使用VBA解决方案,因为它是最适合这项工作的工具。没有任何“显示问题”,无论如何都会大幅摆动它。