我非常喜欢KISS原则(保持简单)和excel用户的长时间VBA。但是,我在VBA与VSTO(Visual Studio Tools for Office)上找到的所有文章看起来都非常复杂。
首先,我厌倦了Excel中内置的非常糟糕的IDE,我正在寻找新的IDE。使用Visual Studio作为IDE的VSTO似乎是唯一的选择。
所以我试着了解VBA和VSTO之间的区别是什么值得我学习使用VSTO?
答案 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被解释并完全包含在应用程序中。这里的优点是:
对于小型应用程序和UDF,VBA可以运行 fine 。您可以在Excel中快速轻松地进行构建,并且一切正常。
但是,如果您的程序具有任何类型的复杂性,那么探索VSTO将非常值得。优势包括:
VSTO在这一点上已被充分记录:
性能主题比较模糊,但是与之前的一些答案相比,这实际上取决于您的瓶颈。 COM互操作性可能会增加开销,但同时VBA执行模型比C#所提供的模型慢得多。特别是当您考虑到对VSTO进行编程可以提供的三种范例时,VSTO比类似编码的VBA程序快几个数量级。
答案 3 :(得分:0)
您对VBA的回答感到非常惊讶。
在VBA上工作了几年(主要是在展望方面),我对各种负面方面感到无聊,由于效率更高,我选择了VSTO。
我面临许多负面因素:
开发中
部署
更新
加载项功能更强大(通过功能强大,我的意思是使复杂的事情更容易),可以将功能区中的按钮添加到功能强大的功能中,并且更易于部署(请查看ClickOnce)。
通常,VBA宏是供个人使用的,而VSTO应用程序是要分发的,您可以在此处阅读:
如果您要开发要分发给多个人的解决方案,则应将VBA代码转换为Outlook COM或VSTO加载项或Outlook的Office加载项。
em>