Произошло исключение COMException: ErrorCode = -2146824070 - PullRequest
0 голосов
/ 30 января 2012

Я использую библиотеку Interop для Word и получаю исключение COM:

Сообщение: "Несоответствие типов" Код ошибки: -2146824070 Источник: «Microsoft Word»

Метод выдачи ошибки:

object docStart = doc.Content.End - 1;
object docEnd = doc.Content.End;
object start = subDoc.Content.Start;
object end = subDoc.Content.End;

Word.Range rng = doc.Range(ref docStart, ref docEnd);
rng.FormattedText = subDoc.Range(ref start, ref end);

(выдается ошибка при попытке установить свойство FormattedText.)

Локальные пользователи при отладке:

docStart: 0
docEnd: 1
start: 0
end: 10

Я не уверен, что моя проблема здесь. Есть идеи? Спасибо!

Ответы [ 2 ]

1 голос
/ 30 января 2012

Я бы отладил, разбив последнюю строку на 2 части.

  1. вызов subdoc.Range (помещение результата в переменную temp)
  2. установите значение rng.FormattedText.

Убедитесь, что # 1 действительно делает то, что вы ожидаете. Я предполагаю, что этого не произойдет, потому что end выходит за пределы documentEnd.

0 голосов
/ 31 января 2012

Последняя строка должна быть

rng.FormattedText = subDoc.Range(ref start, ref end).FormattedText; 

Т.е. вам нужно добавить .FormattedText в конец строки.

Вы не можете установить FormattedText для объекта диапазона, вы можетеустановите для него только объект formattedText.

Тот факт, что они оба относятся к типу System .__ ComObject означает, что они оба заключены в RCW.Объекты внутри обертки бывают разных типов.

...