【问题标题】:How to change Word.Range text without losing format如何在不丢失格式的情况下更改 Word.Range 文本
【发布时间】:2008-10-26 16:28:48
【问题描述】:

任何人都知道如何更改 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);
    }            

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

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

谢谢。

【问题讨论】:

    标签: ms-word ms-office add-in text-formatting


    【解决方案1】:

    您不能使用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;
    }
    

    也许这对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      相关资源
      最近更新 更多