2016-08-28 3 views
-1

여러 개의 텍스트 상자가 포함 된 템플릿 Word 문서에 도형 위에 여러 텍스트 상자가 있습니다 (텍스트 상자의 윤곽을 얻을 수있는 것보다 더 좋은 테두리 윤곽을 나타 내기 위해). 이 텍스트 상자에는 병합 할 편지 병합 필드가 있습니다. 나는 문제는이 첫 번째 텍스트 상자에서 필드를 변경 인이여러 텍스트 상자에 병합하는 메일 Word

foreach (Microsoft.Office.Interop.Word.Range range in document.StoryRanges) 
     { 
      foreach (Microsoft.Office.Interop.Word.Field field in range.Fields) 
      { 
       if (field.Code.Text.Contains("Test Field")) 
       { 
        field.Select(); 
        application.Selection.TypeText("test"); 
      } 
     } 

을 수행하기 위해 다음 코드를 가지고, 나는 그러나 나는 계속 문제가 발생하고, 여기 MSDN 솔루션에 대한에 모두 수색 실제로 해결책을 찾고 있습니다. 나는 또한 뭔가를

Console.WriteLine(document.StoryRanges.Count); 

을 파악 그리고 foreach 루프 내에서 나는 또한를 WriteLine에 대한 첫 번째 호출은 두 StoryRanges이 하나가되는가 표시

Console.WriteLine(range.Fields.Count); 

가지고 시도에 다음 줄을 추가 한 주 문서, 다른 모든 범위는 모든 텍스트 상자에 있습니다, 나는 추정한다. 그러나 두 번째 WriteLine은 첫 번째 범위에 0 개의 필드가 있음을 나타내지 만 두 번째 범위에는 내가 사용하는 템플릿 문서에 10 개가 넘는 필드가 포함되어 있더라도 1 개의 필드 만 있습니다.

답변

0

StoryRanges는 중첩되어 있습니까? 다른 유형입니까?

그렇다면 여기에 제안, 당신은 StoryRange.NextStoryRange 사용을 고려해야합니다 : http://word.mvps.org/faqs/customization/ReplaceAnywhere.htm

'Iterate through all story types in the current document 
    For Each rngStory In ActiveDocument.StoryRanges 

     'Iterate through all linked stories 

     Do 

     With rngStory.Find 

     .Text = "find text" 

      .Replacement.Text = "I'm found" 

      .Wrap = wdFindContinue 

     .Execute Replace:=wdReplaceAll 

     End With 

     'Get next linked story (if any) 

     Set rngStory = rngStory.NextStoryRange 

     Loop Until rngStory Is Nothing 

    Next