【问题标题】:ExcelDna - Excel can't access function in base classExcelDna - Excel 无法访问基类中的函数
【发布时间】:2022-03-18 15:13:54
【问题描述】:

当 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)

    标签: excel-dna


    【解决方案1】:

    仅扫描 .dna 文件中 <ExternalLibrary ... /> 列表中包含的程序集中的代码以查找要注册的函数。也许那里没有提到您的外部程序集。

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多