0

我正在使用 Word 的 Interop 库,但出现 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

我不确定我的问题是什么。有任何想法吗?谢谢!

4

2 回答 2

1

我会通过将最后一行分成两部分来进行调试。

  1. 调用subdoc.Range(将 reslt 放入临时变量中)
  2. 将其设置为rng.FormattedText.

检查 #1 是否真的在做你期望的事情。我的猜测是,它不会是因为end超越documentEnd

于 2012-01-30T18:00:05.077 回答
0

最后一行必须是

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

即您需要添加.FormattedText到行尾。

您不能将 FormattedText 设置为范围对象,只能将其设置为 formattedText 对象。

它们都是 System.__ComObject 类型的事实只是意味着它们都包装在 RCW 中。包装器内的对象是不同类型的。

于 2012-01-30T23:54:12.480 回答