我被委托在Excel中创建一个财务规划工具,需要用到一些定制的函数/宏。
我的第一反应是使用VBA。我以前已经用过它来驱动Excel(大约5年前)。但我开始思考,是否最好使用VSTO。
有没有人有使用这两种技术的经验,并可以列出优缺点,以便我评估哪种方法最好。
好的,是的,你应该这么说!大多数像你这样的人都是VBA程序员,正在尝试进入.NET。所以我误解了。我正在寻找比较信息的问题,如部署、调试和UDFs。根据对这个问题的回答,我应该提到我的C#有5年以上的经验,而我的VBA技能(或者说缺乏技能)只有3或4次每十年。
不幸的是,VSTO 仅适用于 Excel 2003 及以上版本,而且我认为您必须为 Excel 2003 和 Excel 2007 创建单独的插件。另一方面,使用未使用 VSTO 的托管 COM 插件可以轻松兼容 Excel 2000 及以上版本。最后,VSTO 不支持 UDF 的创建,因此,您必须要么创建托管自动化插件,要么利用调用您的 VSTO 函数的 VBA 前端。
总的来说,如果您可以限制自己在 Excel 2007 及以上版本中使用,则应选择 VSTO。如果您的需求是 Excel 2003 及以上版本,则应考虑 VSTO。如果您需要在 Excel 2000 及以上版本上运行,则应选择托管 COM 插件。
对于 UDF 支持,我会创建一个托管自动化插件,这适用于 Excel 2002 及以上版本。如果您需要在 Excel 2000 或更低版本上使用 UDF,则需要一个调用您的 .NET 程序集中 COM-visible 方法的 VBA 前端。
这是我看到的基本优缺点。如果您需要更多信息,请告诉我。
-- Mike
这里有许多好答案,所以我会尝试提出一个还没有被提及的观点。我建议使用VBA。有很多原因,但对我来说,主要因素是:
然而,显然VBA并不是非常受保护的语言,所以如果你有想要隐藏的代码,最好使用 .Net。
SpreadsheetGear for .NET 允许您在.NET(WinForms、ASP.NET等)应用程序中添加与Excel兼容的电子表格组件,而无需使用COM互操作性带来的缺点(性能、易用性)。
如果您想了解更多关于 SpreadsheetGear Windows Forms 电子表格控件的信息,请点击这里。您还可以在这里查看实时的ASP.NET示例,并且如果您想自己试用,可以在这里下载免费试用版。
免责声明:我拥有SpreadsheetGear LLC。