0

任何人都知道如何更改 Word.Range 对象的文本但仍保持其格式?例如,如果我有“this text ”并将其更改为“that txt ”,则 txt 仍将是粗体。

我正在寻找一种方法来更改范围的整个文本,而不仅仅是一个单词,因为我从独立的 API 获取新文本,我可以假设新文本和旧文本具有相同的数字的话。

这是我到目前为止得到的:

    for (int i = 0; i < oldWords.Length; i++)
    {
        if (oldWords[i] == newWords[i])
            continue;

        object Replace = WdReplace.wdReplaceOne;
        object FindText = oldWords[i];
        object ReplaceWith = newWords[i];
        var success = Sentence.Find.Execute(parameters stub);
    }            

但是由于某种原因,它只在第一次 Execute 中成功,因为范围选择仍然在找到的单词上。

编辑:知道了,每次执行后,我都恢复了 Range 的原始结束位置。

谢谢。

4

1 回答 1

0

您不能使用该Execute方法更改带有格式的文本。你可以这样做:

Range rng=doc.Content;
rng.Find.Execute(ref finding, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)

//if this method returns true, you will get the range at the finding location.
if(rng.Find.Found)
{
  rng.Text='sth';
  rng.Bold=0;
}

也许这可以帮助你。

于 2008-11-21T03:59:34.157 回答