ironclads Ответов: 2

Пытаюсь просмотреть все открытые документы word. Мой код отображает только два документа word, когда открыты 4.


при использовании этого кода из ответа 2: https://www.codeproject.com/Answers/185610/Getting-currently-open-MS-word-insatnce-count-and-.aspx#answer2

Microsoft.Office.Interop.Word.Application objWord;
objWord=(Microsoft.Office.Interop.Word.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Word.Application");
for (int i = 0; i < objWord.Windows.Count; i++)
{
     object a = i+1;
     Window objWin = objWord.Windows.get_Item(ref a);
     MessageBox.Show(objWin.Caption);
}

Я действительно получаю результаты, отображающие два окна документов word, но единственная проблема заключается в том, что существуют 4 и открыты 4 документа word. Это дает мне первые 2, но не более того. Я делаю что-то не так?

Что я уже пробовал:

Я пытался проверить, не ошибается ли счетчик, но все, что находится за пределами 1 и 2, выдает ошибку, даже 0. Похоже, что код видит только два документа, хотя их всего 4. Это тоже не старая сессия. Это не имеет значения, так как я проверил и это тоже. Не имеет значения, какие из них первые, видны только два.

2 Ответов

Рейтинг:
2

Maciej Los

Там есть целая коллекция Документы[^], вы можете пройти через него...

foreach(Document doc in WordApp.Documents)
{
   //your logic here
}


Рейтинг:
1

Richard MacCutchan

Вы должны спросить человека, который опубликовал этот ответ.


Maciej Los

Пожалуйста, не поймите меня неправильно, но я почти уверен, что такой "ответ" должен быть опубликован в комментарии, Ричард.
Кстати: очень хороший совет.

Richard MacCutchan

Я согласен; спасибо, что указали на это.