ExcelDna - Excel 无法访问基类中的函数



当Excel试图调用抽象基类中的方法时,我会得到一个运行时错误

"无法运行Marco"MarcoName"。宏可能不可用";

我可以从超级类运行代码。

代码与此相似

public abstract class MyBaseClass
{
public static bool MyMethod(string path)
{
if(Valid(path))
{return true;}
return false;
}
}

此代码位于通过nuget包导入的单独程序集中

调用代码类似于下面的

public class MyClass : MyBaseClass
{
public static bool MyOtherMethod()
{
return true;
}
}

用";[ExcelFunction]";属性无效。

我正在像这样加载xll文件,

Application.RegisterXLL (path)

我这样称呼这个方法,

Application.Run("MyMethod", path)

只有.dna文件中<ExternalLibrary ... />列表中包含的程序集中的代码才会扫描要注册的函数。也许那里没有提到你的外部组件。

此外,并不总是考虑抽象类型。如果我看一下扫描这里的程序集的代码,这似乎在某个时候发生了变化:https://github.com/Excel-DNA/ExcelDna/blob/57c2d0a499a044f6cd1c4ae2c9fbf5b084159dea/Source/ExcelDna.Integration/AssemblyLoader.cs#L93所以这可能也取决于你的Excel DNA版本。

最简单的方法可能是拥有一个包含所有要导出的函数的类,您可以在其中添加Excel特定的属性(<ExcelFunction .../>(,并在内部转发调用。

最新更新