2010-12-27 17 views
2

C# und Wort Interop, ich ein Word-Dokument mit einigen textboxs (msoTextBox Formen) haben, das Problem, dass ich nicht mit dem Code unten durch die Formen Sammlung iterieren:Kann iterieren nicht durch Formen Sammlung

foreach (Shape shape in WordDocument.Shapes) 
     {} 

obwohl, wenn ein Haltepunkt in der Schleifenleitung einstellen kann ich sehen, daß WordDocument.Shapes.Count 4.

kehrt ich fest, dass textboxs Open XML SDK eingesetzt sind.

Antwort

2

Ich habe es ein Problem gibt gefunden, wenn Textfelder verwendet werden. Werfen Sie einen Blick auf diese solution.

+0

Was genau ist die Lösung hier? Verwenden von Range.ShapeRange anstelle von Document.Shapes? – Chris

+0

@Chris - es scheint, man muss alle Datenstrukturen (ugh!) Navigieren und auf diese Weise Änderungen vornehmen. Nicht sehr elegant. (Code befindet sich unter dem obigen Link.) –

+0

Link ist jetzt defekt. – Chris

0

Von Code Project:

// Get the word count from all shapes 
    foreach (Word.Shape shape in wordDocument.Shapes) 
    { 
     if (shape.TextFrame.HasText < 0) 
     { 
      count+=GetCountFromRange(shape.TextFrame.TextRange,wordDocument,word); 
     } 
    } 

Von dem, was Sie gesagt haben, Sie sehen aus wie Sie das Richtige zu tun.

Können Sie uns den Fehler StackTrace geben?

PS: Ich weiß, dass meine Frage in den Kommentaren hätte sein sollen, aber es wäre nicht lesbar gewesen :)