2017-12-11 4 views
0

Der Versuch, Makro unten an C# zu konvertieren:convert von Wort zu C# Makro Wenn varObj.Type = msoEmbeddedOLEObject Dann

For Each varObj In ActiveDocument.Shapes 
    If varObj.Type = msoEmbeddedOLEObject Then 
    n = n + 1 
    End If 
Next varObj 

Was ich versucht und nicht kompiliert:

foreach (Word.Shapes tempLoopVar_varObj in winword.ActiveDocument.Shapes) 
{ 
    if (tempLoopVar_varObj.Type == ord.WdInlineShapeType.msoEmbeddedOLEObject) 
    { 
    fileCount++; 
    } 
} 

Antwort

0

winword.ActiveDocument.Shapes tatsächlich gibt Iterator mit zugrundeliegendem Objekt vom Typ Word.Shape. Versuchen Sie wie folgt aus:

foreach (Word.Shape tempLoopVar_varObj in winword.ActiveDocument.Shapes) 
{ 
... 
} 

HINWEIS: Die Iteratoren/Sammlungen in Wort-iterop dll sind nicht generisch, aber ihren Namen ein gemeinsames Muster folgen. Wenn Sie über Word.Shapes iterieren, entspricht das zugrundeliegende Objekt dem Sammlungs-Typ, aber in singulärer Benennung -> Word.Shape.