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

时间:2012-05-25 16:50:40

标签: c# excel vsto named-ranges

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

如果我在excel中删除包含一个或多个命名范围的行,保存我的工作簿并重新启动excel,则仍会返回所述行中的命名范围,这会导致我的问题。

为了命名单元格,我做了一个简单的Application.Selection.Name =“whatever”。为了让他们恢复正常,我正在使用Application.ActiveWorkbook.Names。

有人可以告诉我这是否是正确的行为,如果有的话,是否有办法过滤范围 - 通过C#excel互操作代码 - 只有当前可见的那些。

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

删除具有名称的范围时,不会删除该名称。相反,它被替换为无效的引用:

Sheet1!#REF!  

检测此类名称的最简单方法是在读取RefersToRange属性时捕获异常。