在没有MacroType的自定义ExcelDNA异常处理程序中获取调用函数

时间:2016-11-16 16:41:04

标签: c# excel excel-dna

我知道ErrorHAndler.dna example中显示了方法:

private object ErrorHandler(object exceptionObject)
{
    ExcelReference caller = (ExcelReference)XlCall.Excel(XlCall.xlfCaller);

    // Calling reftext here requires all functions to be marked IsMacroType=true, which is undesirable.
    // A better plan would be to build the reference text oneself, using the RowFirst / ColumnFirst info
    // Not sure where to find the SheetName then....
    string callingName = (string)XlCall.Excel(XlCall.xlfReftext, caller, true);

    [...]

}

但有人确定评论中描述的问题可能如何解决?即有没有办法在不设置IsMacroType=true的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您不需要IsMacroType=true来获取调用者(如果没有调用者,示例中的第一行就可以正常工作)。如示例中的注释所示,如果要为范围构建文本描述,则需要自己从ExcelReference中的行/列信息构建它。您可以通过调用XlCall.Excel(XlCall.xlSheetNm, caller)来获取工作表名称。