我正在使用VSTO(在Visual Studio 2008上由于客户端请求)在单个单元格上创建命名范围,然后将其保存到工作簿,然后在应用程序重新启动时读取。
如果我在excel中删除包含一个或多个命名范围的行,保存我的工作簿并重新启动excel,则仍会返回所述行中的命名范围,这会导致我的问题。
为了命名单元格,我做了一个简单的Application.Selection.Name =“whatever”。为了让他们恢复正常,我正在使用Application.ActiveWorkbook.Names。
有人可以告诉我这是否是正确的行为,如果有的话,是否有办法过滤范围 - 通过C#excel互操作代码 - 只有当前可见的那些。
提前致谢。
答案 0 :(得分:2)
是的,这是正确的行为,与VSTO无关。
删除具有名称的范围时,不会删除该名称。相反,它被替换为无效的引用:
Sheet1!#REF!
检测此类名称的最简单方法是在读取RefersToRange
属性时捕获异常。