使用 NetOffice 在 Excel 中创建名称范围会引发 COMException
Creating a Name Range in Excel using NetOffice throws a COMException
我想从 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:$I"); //throws
wb.Names.Add("myName", "'=Sheet1!$F:$I'"); //throws
if (_wb.ActiveSheet is Worksheet ws) {
ws.Names.Add("myname", "=Sheet1!$F:$I"); //throws as well
}
}
catch (COMException e)
{
//always ends up here with Inner Exception : COMException (HRESULT 0x800A03EC)
}
}
实际上,这个问题的根本原因不是方法本身,而是什么时候调用了这个方法。
我试图从 UDF 函数中创建命名范围,但 Excel 认为此操作以及进行计算时的其他 worksheet/data 操作是未经授权的,这就是 COM 异常的原因被提出。
底线:工作簿计算正在进行时无法创建命名范围。
我想从 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:$I"); //throws
wb.Names.Add("myName", "'=Sheet1!$F:$I'"); //throws
if (_wb.ActiveSheet is Worksheet ws) {
ws.Names.Add("myname", "=Sheet1!$F:$I"); //throws as well
}
}
catch (COMException e)
{
//always ends up here with Inner Exception : COMException (HRESULT 0x800A03EC)
}
}
实际上,这个问题的根本原因不是方法本身,而是什么时候调用了这个方法。
我试图从 UDF 函数中创建命名范围,但 Excel 认为此操作以及进行计算时的其他 worksheet/data 操作是未经授权的,这就是 COM 异常的原因被提出。
底线:工作簿计算正在进行时无法创建命名范围。