Word / Office Automation - Как извлечь выбранное значение из поля раскрывающегося списка - PullRequest
1 голос
/ 10 августа 2010

Я пытаюсь получить значение всех полей в текстовом документе с помощью автоматизации делопроизводства с использованием c #.Код показан ниже, однако, если поле является раскрывающимся, тогда значение текста диапазона всегда пусто, даже если я знаю, что оно заполнено.Если это простое текстовое поле, то я вижу текст диапазона.Как получить выбранный выпадающий элемент?Я чувствую, что должно быть что-то довольно простое, что я делаю неправильно ...

private void OpenWordDoc(string filename) {
  Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
  Document doc = app.Documents.Open(filename, ReadOnly: true, Visible: false);

  foreach (Field f in doc.Fields) {
    string bookmarkName = "??";
    if (f.Code.Bookmarks.Count > 0) {
      bookmarkName = f.Code.Bookmarks[1].Name; // have to start at 1 because it is vb style!
    }
    Debug.WriteLine(bookmarkName);
    Debug.WriteLine(f.Result.Text); // This is empty when it is a drop down field
  }
  doc.Close();
  app.Quit();
}

1 Ответ

1 голос
/ 10 августа 2010

Ага - если я сканирую через FormFields вместо Fields, тогда все хорошо ...

foreach (FormField f in doc.FormFields) { 
  string bookmarkName = "??"; 
  if (ff.Range.Bookmarks.Count > 0) { 
    bookmarkName = ff.Range.Bookmarks[1].Name; // have to start at 1 because it is vb style! 
  } 
  Debug.WriteLine(bookmarkName); 
  Debug.WriteLine(ff.Result); // This is empty when it is a drop down field 
} 

Проблема решена. Уф.

...