当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 .../>
(,并在内部转发调用。