【发布时间】:2017-11-10 01:02:58
【问题描述】:
当我尝试使用 Word 互操作通过页面上的形状执行 foreach 时遇到一个奇怪的错误
我的代码如下
foreach (word.Shapes p in pages[3].Application.ActiveDocument.Shapes )
{
p.SelectAll();
}
由于某种原因,我得到的例外是这个,我不知道该怎么做才能解决这个问题。
{“无法将类型为“System.__ComObject”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Word.Shapes”。此操作失败,因为对具有 IID 的接口的 COM 组件调用 QueryInterface '{ 0002099F-0000-0000-C000-000000000046}' 由于以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE))。"}
【问题讨论】:
-
不要使用
word.Shapes,而是将foreach变量作为var。无论如何,这都会起作用,然后看看它实际上是什么类型。 -
您是否尝试过实际投射
p?像这样:(Word.Shapes)p? -
@KobyDouek:在
foreach循环中显式指定类型将为您执行转换,因此转换不会产生影响。