Excel.当其中一个参数引用另一个表时,Interop: AccessViolation异常

本文关键字:另一个 Interop 异常 AccessViolation 引用 参数 一个 Excel | 更新日期: 2023-09-27 18:15:30

我尝试使用Excel创建记录集。互操作和ExcelDNA。我使用列表函数来获取函数向导对话框。所以我该怎么做:我写信给ActiveCell。该函数的值("=MyFunction()")2)然后尝试运行函数向导

            ...
            cell.FormulaR1C1 = formulaStr;
            if (!(bool)cell.FunctionWizard()) {
            ...

函数对话框启动并正常工作(我可以设置所有参数),但当我按ok时,如果至少一个参数引用另一个表,则发生AccessViolation错误。(如果所有的东西都在一张纸上,这种方法很有效)。函数在按下ok按钮后求值,FunctionWizard()方法上发生异常。有人有类似的吗?

----------更新--------------

我做了简单的DNA插件,只有1个按钮。错误还在继续:1)功能:

            [ExcelFunction("My Test Function")]
        public static string MyTestFunction(string param1, string param2) {
            return "It works!";
        }
2)功能区按钮代码:
        public void OnButtonPressed(IRibbonControl control) {
        Application exAp = (Application)ExcelDnaUtil.Application;
        Range ac = exAp.ActiveCell;
        ac.FormulaR1C1 = "=MyTestFunction()";
        if ((bool)ac.FunctionWizard()) {
            // Do something
        }
    }

所以当我从另一个表中设置参数并在函数向导中按ok时,发生AccessViolation

Excel.当其中一个参数引用另一个表时,Interop: AccessViolation异常

找到解决方案了。我使用:

Microsoft.Office.Interop.Excel.Dialog dialog = app.Dialogs.get_Item(Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogFunctionWizard);
    if (!(bool)dialog.Show()) {

代替:

 if (!(bool)cell.FunctionWizard()) {