Excel VBA和VSTO有什么区别,我应该升级吗?
我是KISS原则(保持简单)的超级粉丝,也是excel用户的长期VBA。然而,我能找到的所有关于VBA与VSTO(VisualStudioToolsforOffice)的文章似乎都非常复杂 首先,我厌倦了Excel内置的非常糟糕的IDE,我正在寻找一个新的IDE。使用VisualStudio作为IDE的VSTO似乎是唯一的选择Excel VBA和VSTO有什么区别,我应该升级吗?,excel,vba,ide,vsto,Excel,Vba,Ide,Vsto,我是KISS原则(保持简单)的超级粉丝,也是excel用户的长期VBA。然而,我能找到的所有关于VBA与VSTO(VisualStudioToolsforOffice)的文章似乎都非常复杂 首先,我厌倦了Excel内置的非常糟糕的IDE,我正在寻找一个新的IDE。使用VisualStudio作为IDE的VSTO似乎是唯一的选择 因此,我试图了解VBA和VSTO之间的区别,以了解是否值得我学习使用VSTO 您使用哪种工具集在很大程度上取决于个人喜好,但这里有一些事情需要考虑:1。性能:对于大多数与
因此,我试图了解VBA和VSTO之间的区别,以了解是否值得我学习使用VSTO 您使用哪种工具集在很大程度上取决于个人喜好,但这里有一些事情需要考虑:
1。性能:对于大多数与Excel相关的任务,由于额外的互操作层,VSTO的执行速度比VBA慢。
2。自定义项:VSTO不支持自定义项
3。对象模型:使用VSTO处理Excel对象模型比使用VBA更难,因为没有.NET宏记录器提供提示。
4。IDE:使用VSTO,您可以访问最新的Visual Studio IDE(假设您拥有Visual Studio许可证)
5。Net Framework:VSTO使您能够访问非常丰富和强大的.Net Framework
6。学习曲线:VB.NET与VBA是一种不同的语言,.NET框架和对象模型的差异意味着转换并不像可能的那么简单。
7。如果您想使用visual studio/.NET路径,我建议您使用Addin Express或XLDNA,而不是VSTO:这两种方法的限制都比VSTO小。Excel中的VBA具有在编辑代码和运行代码之间获得快速结果的优势。因为你是一个优秀的VBA程序员,你可以不用Visual Studio的超级功能(intellisense、try catch Fanaly、inherits、every.NET对象、多线程…) VSTO是在一个非常好的IDE(Visual Studio)中工作的一种方法,但我担心在VB.NET和Excel之间切换会浪费很多时间。它不像Excel中的VBA那样直接 如果编程的主要目的是保存在Excel文件中,那么请使用VBA。如果你真的需要在Excel文件之外工作,或者如果你想做一些不需要依赖于Excel文件的事情,也许你可以考虑VSTO。此外,VSTO非常新,文档可能不完整 如果我是你,我会留在VBA。这是我的拙见。 我写了一些VBA和VB.NET(VSTO)之间的比较:
给你 这是最初提出这个问题的6年后,所以在OP的时候,这两个工具之间的比较可能是不同的,但我实际上非常惊讶现有的答案对VBA是多么有利 VBA完全在应用程序中进行解释和封装。这里的优点是:
- 编码可以直接在应用程序中完成,不需要外部工具
- 特定于应用程序的功能(如宏录制)可以实现快速原型制作
- 您可以利用特定于Excel的ActiveX控件,如RefEdit
- UDF可以很容易地开发 < > AdIn作为文档(.xLA格式)分发。
- 能够使用多种编程语言,如VB.NET或C#
- 更好的集合支持(通用列表、字典、元组等)
- 支持线程、异步执行
- 将加载项部署为独立应用程序
- 能够使用本机WinForms并开发非阻塞UI
关于性能的话题相当模糊,但与前面的一些答案相比,这实际上取决于您的瓶颈。COM互操作性可能会增加开销,但同时VBA执行模型比C#提供的要慢得多。特别是当您考虑到编程VSTO可以提供的各种范例时,VSTO将比类似编码的VBA程序快几个数量级。您对VBA的回答让我非常惊讶 在VBA工作了几年(主要是outlook),我对各种消极方面感到厌烦,我现在转到VSTO,因为它效率更高 我遇到了许多不利因素: 发展
- Vba IDE非常有限
- 用户表单受到限制(尝试创建富文本框)
- 用户需要执行太多操作(修改安全设置、导入引用、修改功能区…)
- 无法自动更新,您需要为每次更新向用户发送新文件
@David,这似乎很接近,但我认为称之为重复而不是重复是不公平的:将VB6与VBA进行比较与将VSTO/VB.NET与VBA进行比较毫无关系。最肯定的是,这不是重复!