Word2010 Shapes GroupItems无法获取TextFrame2.TextRange

时间:2012-12-31 13:40:41

标签: vba vsto ms-office word-vba shapes

我打开一个docx,这是由word2010编辑的,在这个doc中,我有一些使用group的形状。但是当我得到子形状时,我无法获得子形文本。 这是我的代码。有人告诉我为什么?感谢。

Word.Application woradApp = new Word.Application();
            Word.Document doc = woradApp.Documents.Open(@"D:\ABC\a.docx");
            Word.Shapes Shapes =doc.Shapes;
            List<Word.Shape> list = Shapes.Cast<Word.Shape>().ToList<Word.Shape>();
            foreach (Word.Shape shape in list)
            {
                if (shape.Type == MsoShapeType.msoGroup)
                {
                    Word.GroupShapes dyShapes = shape.GroupItems;                  
                    foreach (dynamic item in dyShapes)
                    {
                        var range = item.TextFrame2.TextRange;
                    }
                }
            }    

“item.TextFrame2.TextRange.Text”代码给出一个例外,因为“TextRange”为null,这应该有文本,哪里可以得到文本?

1 个答案:

答案 0 :(得分:0)

请显示var range是什么,是Range对象还是TextRange对象?我认为它只是一个variant array

以下是一些尝试的步骤:

  1. 确保每个形状都支持TextFrame2属性
  2. Ungroup shapes第一
  3. 按照您的方式循环遍历形状,以检查所需的值
  4. 如果null没有价值,请务必处理TextRange ...这是您案件中最有可能的罪魁祸首。
  5. 将形状分组。

    foreach(dyShapes中的动态项) {     如果不是IsNull(item.TextFrame2.TextRange.Characters.Text)     {        var range = item.TextFrame2.TextRange.Characters.Text;     } }

  6. 首先,您可以在当前代码中处理Null。如果失败,请尝试ungrouping建议。