Excel编程方法

Sou*_*uth 6 excel vba methodology vsto user-defined-functions

在UDF,宏,加载项,自动化加载项,XLL或VSTO之间的Excel编程有何不同.
我应该使用哪一个以及在哪种情况下?

Mat*_*ias 8

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

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


Lan*_*rts 5

将 VBA 用于 Excel 2003 及更早版本(尽管如果需要,您仍然可以在 2007 中使用它)。

VSTO 适用于 Excel 2003 或 2007。

旧的 Excel 4.0 宏语言绝对不应该再使用,它​​们会不断禁用部件并且功能正在消失。我们不得不重写我们所有的电子表格以去除旧的宏。

宏也是 VBA 代码的另一个名称。

外接程序只是另一个包含代码的 Excel 工作簿(如 VBA),因此您可以在不同的工作簿中使用代码,并将代码直接保留在用户工作簿之外。

UDF 只是一个用 VBA 编写的函数,它被称为电子表格单元格中的工作表函数(它也可以存储在插件中)。

  • 三个小注意事项,因为 OP 要求我们将苹果与篮子进行比较:(1)“宏”一词通常用于描述 VBA 代码,而不仅仅是旧的 Excel 4.0 宏语言。很少能看到任何 Excel 4.0 宏代码“在野外”。(2) 加载项也通常用 VBA 编写。(3) UDF 可以存储在加载项中以及调用它们的电子表格中。 (2认同)