您的 .NET 库可以将该Shampoo
类导出并注册为 COM 可见类型,然后您可以从 VBA 将其实例化为Dim sh = New Shampoo()
. 类似地,可以定义其他类型,例如
public class Shopper()
{
public string ReadLabel(Shampoo shampoo)
{
return shampoo.Name;
}
}
然后 aNew Shopper()
可以通过shampoo
:
Dim anne As Shopper = New Shopper()
Dim dove As Shampoo = New Shampoo()
Dim label As String
label = anne.ReadLabel(dove)
使用Shampoo
(Shopper.ReadLabel
上面) 的方法不会static
也不会作为 UDF 或任何东西对 Excel 可用 - 就像通过 VBA 的 COM 互操作调用的 .NET 对象上的方法一样。
到目前为止 - 没有涉及Excel-DNA 。您可以使用标准的 .NET 程序集来完成所有这些工作,该程序集使用正确的标志和属性进行编译,并在您的计算机上注册了 COM 互操作。
但是,Excel-DNA 还允许您的加载项成为 COM 服务器。这意味着 .xll 可以托管您在库中定义的 COM 类,您的加载项可以进行 COM 注册(而不是安装程序)而无需管理员访问权限,并且您的 COM 对象将与加载项的其余部分。所以 Excel-DNA 有助于粘合,但 VBA 代码和您的 .NET 程序集之间的实际交互是标准的 .NET-to-COM 互操作,一旦您稍微爬上学习曲线,它就可以很好地工作.