1

我想从 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)
        }
    }
4

1 回答 1

1

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

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

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

于 2020-07-21T14:12:33.190 回答