Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NetOffice在Excel中创建名称范围会引发COMException_C#_Excel_Netoffice - Fatal编程技术网

C# 使用NetOffice在Excel中创建名称范围会引发COMException

C# 使用NetOffice在Excel中创建名称范围会引发COMException,c#,excel,netoffice,C#,Excel,Netoffice,我想从NetOffice在Excel中创建一个命名范围,但我不知道如何调用该方法。无论输入是什么,底层Excel对象都会抛出一个带有一般HRESULT 0x800A03EC错误的COMException Excel版本Office 365,16.0.13001,64位 NetOfficeFw软件包,版本1.7.4.11 我没有任何关于错误的提示(语法?Excel版本?NetOffice版本?)。此方法是否存在已知错误 谢谢你的帮助 private void CreateNameRan

我想从NetOffice在Excel中创建一个命名范围,但我不知道如何调用该方法。无论输入是什么,底层Excel对象都会抛出一个带有一般HRESULT 0x800A03EC错误的COMException

  • Excel版本Office 365,16.0.13001,64位
  • NetOfficeFw软件包,版本1.7.4.11
我没有任何关于错误的提示(语法?Excel版本?NetOffice版本?)。此方法是否存在已知错误

谢谢你的帮助

    private void CreateNameRange(Workbook wb, Range range)
    {
        try
        {
            Name existingName = (Name)wb.Names.FirstOrDefault(); //works fine if a name already exists in Excel

            wb.Names.Add(); //throws
            wb.Names.Add("name1"); //throws
            wb.Names.Add("name1", range); //throws
            wb.Names.Add("name1", range.Address); //throws
            wb.Names.Add("name1", "F7"); //throws
            wb.Names.Add("myName", "=Sheet1!$F$7:$I$13"); //throws
            wb.Names.Add("myName", "'=Sheet1!$F$7:$I$13'"); //throws

            if (_wb.ActiveSheet is Worksheet ws) {
                ws.Names.Add("myname", "=Sheet1!$F$7:$I$13");  //throws as well
            }
        }
        catch (COMException e)
        {
            //always ends up here with Inner Exception : COMException (HRESULT 0x800A03EC)
        }
    }

实际上,这个问题的根本原因不是方法本身,而是调用方法时的

我试图从UDF函数中创建命名范围,但Excel认为此操作未经授权,以及计算时的其他工作表/数据操作,这就是引发COM异常的原因

底线:正在进行工作簿计算时,无法创建命名范围。