即使在Excel中“删除”之后,Excel / VSTO中的命名范围也会返回

我正在使用VSTO(基于客户端请求,在Visual Studio 2008上)在单个单元上创build命名范围,然后将其保存到工作簿中,随后在应用程序重新启动时读取。

如果我在Excel中删除一个包含一个或多个命名区域的行,请保存我的工作簿并重新启动excel,那么所述行中的命名范围仍然会返回,这就是我的问题。

为了命名单元格,我做了一个简单的Application.Selection.Name =“whatever”。 为了让他们回到starup我使用Application.ActiveWorkbook.Names。

有人可以告诉我,如果这是正确的行为,如果有的话,如果有任何方法来过滤范围 – 通过C#的Excel Interop代码 – 只有当前可见。

提前致谢。

是的,这是正确的行为,与VSTO无关。

删除具有名称的范围时,名称不会被删除。 取而代之的是一个无效的引用:

Sheet1!#REF! 

检测这些名字的最简单方法是在读取RefersToRange属性时捕获exception。