VBA VS. VSTO有什么区别,我应该升级吗?

时间:2013-05-27 09:24:39

标签: excel vba ide vsto

我非常喜欢KISS原则(保持简单)和excel用户的长时间VBA。但是,我在VBA与VSTO(Visual Studio Tools for Office)上找到的所有文章看起来都非常复杂。

首先,我厌倦了Excel中内置的非常糟糕的IDE,我正在寻找新的IDE。使用Visual Studio作为IDE的VSTO似乎是唯一的选择。

所以我试着了解VBA和VSTO之间的区别是什么值得我学习使用VSTO?

4 个答案:

答案 0 :(得分:16)

您使用的工具集主要取决于个人偏好,但有以下几点需要考虑:1。性能:对于大多数与Excel相关的任务,由于附加的Interop层,VSTO与VBA相比执行速度非常慢。 UDF:VSTO不支持UDF
3。对象模型:使用VSTO的Excel对象模型比使用VBA更难,因为没有.NET宏记录器可以提供提示。 IDE:使用VSTO,您可以访问最新的Visual Studio IDE(假设您拥有Visual Studio许可证)。 .Net Framework:VSTO使您可以访问非常丰富和强大的.NET框架。学习曲线:VB.NET是与VBA不同的语言,.NET框架和对象模型的差异意味着过渡并不是那么简单。如果你想进入visual studio / .NET路线,我建议你看看Addin Express或XLDNA而不是VSTO:这两个都比VSTO有更少的限制

答案 1 :(得分:12)

Excel中的VBA为您提供了在编辑代码和运行代码之间获得快速结果的优势。因为你是一个优秀的VBA程序员,你可以没有Visual Studio的超级功能(intellisense,try-catch-fanally,inherits,每个.NET对象,多线程......)

VSTO是一种在非常好的IDE(Visual Studio)中工作的方式,但我担心你会浪费很多时间在VB.NET和Excel之间切换。在Excel中不如VBA直接。

如果编程的主要目的是保留在Excel文件中,那么请继续使用VBA。如果你真的需要在你的excel文件之外玩,或者如果你想做一些不必要的事情取决于你的excel文件,也许你可以考虑VSTO。此外,VSTO非常新,文档可能不是天才。

如果我是你,我会留在VBA。这是我的愚蠢意见。 我在VBA和VB.NET(VSTO)之间写了一些比较: 这是Difference between VB.NET and VBA

答案 2 :(得分:1)

这是最初提出此问题的第六年,因此在进行OP时,这两种工具之间的比较可能会有所不同,但实际上,我对现有答案对VBA的好评感到非常惊讶! >

VBA被解释并完全包含在应用程序中。这里的优点是:

  • 编码可以直接在应用程序中完成,不需要任何外部工具
  • 宏录制等特定于应用程序的功能可以实现快速原型制作
  • 您可以利用RefEdit等Excel特定的ActiveX控件
  • UDF易于开发
  • 插件以文档(.xla格式)分发

对于小型应用程序和UDF,VBA可以运行 fine 。您可以在Excel中快速轻松地进行构建,并且一切正常。

但是,如果您的程序具有任何类型的复杂性,那么探索VSTO将非常值得。优势包括:

  • 能够使用VB.NET或C#等多范式编程语言
  • 更好的集合支持(通用列表,字典,元组等)
  • 支持线程,异步执行
  • 将外接程序部署为独立应用程序
  • 能够使用本机WinForms和开发非阻塞UI

VSTO在这一点上已被充分记录:

https://docs.microsoft.com/en-us/visualstudio/vsto/create-vsto-add-ins-for-office-by-using-visual-studio

性能主题比较模糊,但是与之前的一些答案相比,这实际上取决于您的瓶颈。 COM互操作性可能会增加开销,但同时VBA执行模型比C#所提供的模型慢得多。特别是当您考虑到对VSTO进行编程可以提供的三种范例时,VSTO比类似编码的VBA程序快几个数量级。

答案 3 :(得分:0)

您对VBA的回答感到非常惊讶。

在VBA上工作了几年(主要是在展望方面),我对各种负面方面感到无聊,由于效率更高,我选择了VSTO。

我面临许多负面因素:

开发中

  • Vba IDE非常有限,
  • 用户格式受到限制(尝试制作一个富文本框)

部署

  • 用户需要执行太多操作(修改安全设置,导入引用,修改功能区...)

更新

  • 无法自动更新,您需要将每次更新的新文件发送给用户。

加载项功能更强大(通过功能强大,我的意思是使复杂的事情更容易),可以将功能区中的按钮添加到功能强大的功能中,并且更易于部署(请查看ClickOnce)。

通常,VBA宏是供个人使用的,而VSTO应用程序是要分发的,您可以在此处阅读:

https://support.microsoft.com/en-us/help/290779/managing-and-distributing-outlook-visual-basic-for-vba

如果您要开发要分发给多个人的解决方案,则应将VBA代码转换为Outlook COM或VSTO加载项或Outlook的Office加载项。

em>