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现在我们知道了!