2017-06-08 5 views
0

Ich bin ein seltsamen Fehler bekommen, wenn ich versuche, ein foreach durch Formen auf einer Seite mit Word-Interop istkann nicht COM-Objekt des Typs Fall

Mein Code zu tun, wie

foreach (word.Shapes p in pages[3].Application.ActiveDocument.Shapes) 
    { 
     p.SelectAll(); 
    } 

folgt Die Ausnahme, die ich aus irgendeinem Grund bekomme, ist dies und ich habe keine Ahnung, was ich tun sollte, um das zu beheben.

{"Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Word.Shapes'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{0002099F-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))."}

+0

Statt 'word.Shapes' zu verwenden, haben Sie Ihre' foreach'-Variable als 'var'. Das wird unabhängig davon funktionieren und dann sehen, um welchen Typ es sich handelt. – krillgar

+0

Hast du schon versucht, 'p' zu spielen? Wie folgt: '(Word.Shapes) p'? –

+1

@KobyDouek: Die explizite Angabe des Typs in der 'foreach'-Schleife führt die Besetzung für Sie durch, sodass das Casting keinen Unterschied machen sollte. –

Antwort

4

Shapes ist die Sammlung Art, sondern um die Formen zu durchlaufen, müssen Sie für jedes Objekt Shape als Typ verwenden.

+0

Danke, weiß nicht, wie ich das nicht gesehen habe :) –

Verwandte Themen