2013-08-01 3 views
4

콘솔 응용 프로그램에서 Microsoft.Office.Interop.Word 네임 스페이스를 사용하여 MSWord 문서에서 양식 데이터를 가져옵니다. 이 MS 워드 문서에는 각각 ID로 사용하고있는 북마크가 지정된 필드가 있습니다.필드 가져 오기 BookMark

필드의 값을 검색하여 사전에 저장할 수 있기를 원합니다. 각 필드의 값만 가져올 수 있지만 책갈피 및 필드는 가져올 수 없습니다.

필드 북마크를 가져 오기 위해 wdField.Result.Bookmark와 같은 작업을 수행 할 수있는 방법이 있습니까? 나는 MSDN documentation을 보았지만이 권리를 얻는 데 어려움을 겪고 있습니다.

 foreach (Field wdField in oWordDoc.Fields) 
      { 
      wdField.Select(); 
      string fieldText = wdField.Result.Text 
      Console.WriteLine(fieldText); 
      //string fieldBookMark = wdField.Result.BookMark 
      } 
+2

책갈피 즐겨 찾기 collection''속한다. 텍스트를 얻으려면'bookmarks (name) .range.text'를 참조해야합니다. –

+0

이것은 본질적으로 제 질문에 대한 답입니다. – GoofyBall

답변

3

KazJaw이 옳다 : : 여기에 열거하고있는 foreach 루프는 모든 대상 텍스트가 "북마크"가 있다면, 당신은 단지 BookMarks에 의존 할 수 있습니다. 샘플 코드 :

foreach (Bookmark bookMark in oWordDoc.Bookmarks) 
{ 
    string bmName = bookMark.Name; 
    Range bmRange = bookMark.Range; 
    string bmText = bmRange.Text; 
} 

또는 :

Range bmRange = oWordDoc.Bookmarks["bookmark name"].Range; 
+0

테스트를 거쳐 작동합니다. 나는 KazJaw에게도 그의 대답을 전할 수는 없다고 생각합니다. 하지만 둘 다 내 문제를 해결했습니다. 북마크 개체에 텍스트가 포함될 수 있다는 것을 알지 못했습니다. 이제 알았어. 감사합니다. – GoofyBall

+0

@GoofBall 문제는 없습니다. 나는 KazJaw가 너무 많이 신경 쓰지 않는다고 생각한다. (포인트는 인생의 모든 것이 아니다 :)). 당신이 코멘트를 게시하고 나중에 아이디어를 공유하기를 원하지만 정확한 문제가 나오지 않기 때문에 (그의 코멘트 이후 30 분 이상) 대답을 쓰지 않을 것입니다. (그의 대답은 VB/VBA 대신 일반적이었습니다. C#보다). 몇 번이면 충분합니다. 답을하기 전에 "... 내 질문에 대답"이라고 쓰면 아무 것도 쓰지 않았을 것입니다. – varocarbas

+0

@GoofBall, 괜찮습니다. 이번에는 전체 답변으로 만들기에는 너무 게으르지 만, Varocarbas가 처음으로 그렇게했기 때문에 그는 정확하고 명확하게 만들었습니다. –