Excel Interop COMException HRESULT:0x800A03EC访问隐藏的单元格时

我在使用Excel Interop在C#中访问Excel中的命名单元格时出现问题,当单元格被隐藏时,我像这样访问它:

bool SomeBoolean = WorkSheet.Range["MyRangeName"].Value; 

当我访问它时,Range属性隐式调用get_range ,这是根据堆栈跟踪抛出exception的。 用于直接调用get_range的代码,并有类似的结果。

如果我取消隐藏单元格,它工作正常。 如果我逐行通过代码,它可以正常工作(这总是令人沮丧的情况)。

当然,我可以通过取消隐藏单元格来解决这个问题,但我想尝试find一个更优雅的解决scheme。 我已经钻研了MSDN文档和几个线程在这里,但我似乎无法find任何东西。 任何帮助将非常感激!

Worksheet.Range的MSDN页面: https : //msdn.microsoft.com/en-us/library/office/ff836512.aspx

这是devise。 根据定义,隐藏的单元格不可访问。

亲自尝试一下。 在Excel中创build工作表,隐藏某些列,然后search(按值,而不是公式)隐藏单元格中的值。 您会看到一个对话框,指出找不到该值。

如果你不同意这种行为,那就把它和微软联系起来。

在这里输入图像说明

感谢大家试图帮助我解决这个谜。 在我的debugging过程中,我注意到有时它神秘地工作,有时候不起作用,于是我翻查了导致问题的代码。

造成这个问题的原因是在调用插件时,从当前选定的工作表中设置的工作表中search范围。 因此,如果工作簿中正确的选项卡在通话时未被选中,则失败。 如果选中,则成功。 事实certificate,这与隐藏的细胞无关。 相当沮丧,但至less现在我们知道了!