Excel 编程方法

标签 excel vba vsto methodology user-defined-functions

Excel 编程中 UDF、宏、外​​接程序、自动化外接程序、XLL 或 VSTO 之间有什么区别。
我应该使用哪一个以及在什么情况下使用?

最佳答案

我会尝试对您提到的一些元素进行分组/反对:

VSTO 与 VBA:
VBA(Visual Basic for applications)是编写办公自动化的“经典”方式。 Excel 有一个开发界面,您可以从办公室启动该界面来编写宏和 UDF,并且该界面大约 10 年没有改变。从好的方面来说,部署很简单,而且 VBA 提供了很好的功能,例如宏记录,它将您的操作记录到代码中,并提供了一种找出对象模型的好方法。
VSTO 最近出现,允许您使用 .NET(使用 COM)实现办公自动化。您可以利用所有 .NET 和 Visual Studio(例如:添加 WPF 表单),这提供了很大的灵 active ,但部署更加复杂。
UDF 与宏与插件
用户定义的函数是定制的方法,将附加到您的工作簿中;添加后,将获得与“内置”Excel 函数相同的状态:您可以从 =MyFunction() 等工作表中调用它们
宏是将附加到您的工作簿的过程。它们可以由用户直接调用,或附加到事件(例如:选择工作表时,执行此操作)。
加载项不附加到特定文档,而是附加到应用程序本身。通常,宏或 UDF 附加到工作簿:当您打开文档时,代码将可供您使用,当您提供文档时,代码也会被复制。相比之下,加载项附加到应用程序:启动 Excel 时,加载项就可供您使用。像求解器这样的工具是一个插件。请注意,外接程序可以使用 VBA 或使用 VSTO 编写(您也可以使用 .NET 编写 UDF,但这不是典型的)。
何时使用什么
加载项与宏/UDF:如果您的功能应该可以从任何工作簿访问,则编写一个加载项。
VSTO 还是没有 VSTO:这是一个有争议的问题。大多数熟悉“经典”VBA 自动化的人不太喜欢 VSTO,因为学习曲线有点陡峭。如果您习惯使用 .Net,这应该不是什么问题 - 但与“正常”.Net 应用程序开发相比,VSTO 有点奇怪。
另请注意,如果您使用 VSTO,则用户无法编辑您的代码。这可以说是可取的,但与此同时,Excel 高级用户通常知道如何使用 VBA 和宏,并期望能够调整代码。这可能会引发有趣的讨论。
就我个人而言,我通常将 VSTO 用于加载项,当我看到大量逻辑/过程代码进入 VBA 中的宏时,我就会使用它。 VSTO 给我的是在 Visual Studio 中编写可测试代码的能力,以及在涉及大量计算时编写高性能代码的能力。使用 VSTO 的另一个原因是利用 WPF 来自定义 Office。

关于Excel 编程方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941335/

相关文章:

excel - 如何拆分段落并导出到 Excel

vba - 在列表框vba中找到所选项目的行#

javascript - 从本地 MS Office 应用程序到浏览器的事件

Excel、IF 更大函数、时间/日期偏移

vba - 将 Excel 工作表导出为 PDF,以空白页形式出现

VBA 编译错误 : Procedure too long

c# - 从 VSTO outlook 插件打开 WPF 窗体

excel - 使用记录集修改 Excel 数据透视表并刷新 : Exception

vba - 有效隐藏枢轴项目

javascript - Excel 任务 Pane - bindingDataChanged 事件永远不会结束