2012-12-31 2 views
0

를 얻을 수 없다 본문. 이것은 내 코드입니다. 누군가 왜 저에게 말합니까? 감사.Word2010 모양 GroupItems 내가이 하위 셰이프를 얻을 수 없다, 나는이 문서에서, 나는 내가 subshapes을 얻을 때 group.but을 사용하는 일부 모양을 가지고, word2010에 의해 편집하는 DOCX를 열 TextFrame2.TextRange

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"와 같은 예외를주는이 곳의 텍스트를 얻을 수 있습니다, 텍스트가되어야한다, 널?

답변

0

var range이 무엇인지 보여 주시겠습니까? Range 개체 또는 TextRange 개체입니까? 그냥 variant array이라고 가정합니다. 여기

은 시도 몇 가지 단계가 있습니다 : 당신이 원하는 값을 확인하기 위해 그렇게했던 것처럼

  1. 각 모양이 모양을 통해 TextFrame2 재산
  2. Ungroupshapes
  3. 루프를 지원하는지 확인
  4. 처리해야합니다 nullTextRange이 사건의 범인 가능성이 가장 높은 값 ...가없는 경우.
  5. 도형을 그룹화하십시오.

    의 foreach (dyShapes 동적 항목) { = item.TextFrame2.TextRange.Characters.Text하지 ISNULL (item.TextFrame2.TextRange.Characters.Text) { VAR 범위 경우; } }

먼저 현재 코드에서 Null를 처리하여 시도 할 수 있습니다. 문제가 해결되지 않으면 ungrouping 제안을 시도하십시오.

+0

안녕 bonCodigo가, 감사는 answer.But 위해 나는 아직도 캔트 당신의 방법으로 텍스트를 얻을. – Wendy369

+0

안녕하세요 bonCodigo, 먼저 "item.TextFrame2.TextRange"를 사용하여 "TextRange \t {System.Reflection.TargetInvocationException : System.ArgumentException : 지정된 값 超 脱了范围 "."빠른 시계 "를 사용하지만 텍스트 정보를 찾을 수 없습니다. "shape.UnGroup()"을 사용하여 두 번째로 ShapeRange를 가져 오지만 여전히 사용할 수있는 TextRange를 찾을 수 없습니다. 문서가 Word2010으로 편집되고 "Docx"로 저장됩니다. 위 코드를 word2003에 사용하면 모두 괜찮습니다. 지금 내가 무엇을 해야할지 모르겠다. 제안을 해줄 수 있습니까? 감사. – Wendy369

+0

Wendy369 여기에 중국어를 입력하지 마십시오. 이 사이트는 영어로 운영됩니다. 그리고 코드가 2003 년에 작동하고 2010 년에 처음에는 실패했다고 언급하지 않았습니다. 코드가 2003 년에 작동하는지 확인할 수 있습니까? – bonCodigo