【问题标题】:VBA VS. VSTO what is the difference, should I upgrade?VBA VS。 VSTO有什么区别,我应该升级吗?
【发布时间】:2020-01-03 16:57:25
【问题描述】:

我是 KISS 原则(保持简单)的忠实粉丝,也是 Excel 用户的长期 VBA 粉丝。然而,我能找到的关于 VBA 与 VSTO(Visual Studio Tools for Office)的所有文章似乎都非常复杂。

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

所以我想了解 VBA 和 VSTO 之间有什么区别,以了解是否值得我学习使用 VSTO?

【问题讨论】:

  • @David,这似乎很接近,但我认为将其称为重复是不公平的
  • 这不是重复:将 VB6 与 VBA 进行比较与将 VSTO/VB.NET 与 VBA 进行比较没有任何关系。
  • 绝对不是重复的!

标签: excel vba ide vsto


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    Excel 中的 VBA 为您提供了在编辑代码和运行代码之间快速获得结果的优势。因为你是一个优秀的 VBA 程序员,你可以不用 Visual Studio 的超级功能(智能感知、try-catch-fanally、继承、每个 .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

    【讨论】:

      【解决方案3】:

      这是最初提出此问题的 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 程序快几个数量级。

      【讨论】:

        【解决方案4】:

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

        使用 VBA 工作了几年(主要是使用 Outlook),我对各种负面方面感到厌烦,我正在转向 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>

        【讨论】:

          猜你喜欢
          • 2013-03-05
          • 2012-11-22
          • 2020-07-24
          • 1970-01-01
          • 1970-01-01
          • 2011-05-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多