Как изменить текст Word.Range без потери формата - PullRequest
0 голосов
/ 26 октября 2008

Кто-нибудь знает, как я могу изменить текст объекта Word.Range, но при этом сохранить его формат? Например, если у меня есть «this text » и я изменяю его на «this 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);
    }            

Но по какой-то причине он успешен только при первом выполнении, потому что выбор диапазона остается для найденного слова.

Редактировать: получил, после каждого выполнения я восстанавливал исходную конечную позицию моего Диапазона.

Спасибо.

1 Ответ

0 голосов
/ 21 ноября 2008

Вы не можете использовать метод 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;
}

Может быть, это может вам помочь.

...