用于Office的VBA或.NET?

时间:2010-05-27 12:15:12

标签: .net vba ms-office vsto

我想开发和自动化Office软件,如“Microsoft Excel 2007”和“Microsoft Word 2007”。但我不知道如何使用VBA或使用C#/ .Net Framework这样做。

使用VBA与.Net框架有什么好处?

我应该关注哪一个学习?

5 个答案:

答案 0 :(得分:7)

在Office自动化方面,VBA和.NET都有其优点和缺点。以下是我脑海中的一些观点。该列表不完整,我的个人意见,所以随意添加/删除点。

.NET的优点是

  • 更丰富的语言和基类库(继承,面向对象)
  • 支持类库
  • 通常更好的工具支持,例如代码分析,测试等
  • 更容易与版本控制集成

.NET的缺点

  • 需要更多学习
  • 更难部署

VBA的优点是

  • 相当苗条
  • 代码在Office中本地执行,不需要更慢的COM桥,因此通常更快
  • 宏录制可用于自动生成高质量代码

VBA的缺点

  • 更多是传统技术
  • 不支持现代和丰富的GUI
  • 有限的工具支持

两者都有共同点

  • 可以使用Windows API
  • 可以使用COM

当谈到学习和熟悉Office对象模型时,VBA肯定更容易学习,特别是因为它很容易记录宏,然后只是在VBA编辑器中玩。

最重要的是,VBA可能最适合应该易于部署的小型项目,而使用.NET,您可以构建功能强大的附加组件,利用完整的.NET Framework并提供丰富的用户体验。

答案 1 :(得分:2)

我会说

如果您不使用Office套件以外的任何其他技术,请转到VBA。

如果您打算处理诸如创建xml文件,使用数据库连接,多线程等事情 - .NET更好。

此外,未来还有好处。您是否打算以开发人员的身份开展事业(去.NET),或者您只是富有成效的人,他们希望创建大部分Office(转到VBA)。

答案 2 :(得分:2)

一种看待它的方法是将其视为与野营车露营和使用五轮拖车和F-350露营之间的区别。

如果Dave和Betty有一辆露营车(Excel),它会带来周末偶尔去海滩旅行所需的一切,以及一个“足够好”的4缸发动机(VBA)来让它们到达那里然后回来。

但也许布巴希望被视为一个严肃的露营者。他想要更灵活地在一年中的任何时间去任何他想去的地方,并且随身携带他想要的任何东西,包括船和狗。所以他会购买F-350(Visual Studio),以及一个可以拉动露营车,船只,滑翔伞和马匹以及五轮车床硬件的故障 - 以防万一。而且他喜欢花时间在车库里设置一切,以便很好地协同工作。 C#/ .Net非常适合所有人。您需要或想要的每个尺寸的绞车和制冷设备都适合。

他们可以将露营车拖到当地的车轮上。

答案 3 :(得分:0)

这在很大程度上取决于问题的复杂程度。如果这是一件简单的事情,快速的VBA脚本就足够了。但如果它只是几十行代码,我会选择C#/ .NET。这些技术显然是微软的战略方向,我发现你可以在技术堆栈中提高效率,而不是尝试使用VBA做复杂的事情。

答案 4 :(得分:0)

如果您几乎没有编程经验,我建议使用VBA,这就是原因。

  • 您将获得快速结果。
  • 您的学习曲线会更短。
  • 您可以使用宏录制器来学习该语言。
  • 该语言有很大的支持基础。

正如史蒂夫罗马在他的一本Word Macro书中所指出的那样,VBA是一种优秀的语言,可以开始学习编程。不,你不会学习OOP,但你会在一个简单,无害的环境中学习程序编程,变量,类型,对象等等。