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

22 ide excel vba vsto

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

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

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

Cha*_*ams 18

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


小智 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)之间写了一些比较:这是VB.NET和VBA之间区别!


Wil*_*Ayd 5

这是最初提出这个问题的 6 年后,所以在 OP 时,这两种工具之间的比较可能有所不同,但实际上我对现有答案对 VBA 的支持程度感到非常惊讶!

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

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

对于小型应用程序和 UDF,VBA 工作正常。您可以在 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 程序快几个数量级的应用程序。