Pergunta

Alguém sabe como posso alterar o texto de um objeto Word.Range mas ainda mantendo formate-o de? Por exemplo, se eu tenho "este texto " e eu mudá-lo para "que txt ", txt ainda estará em negrito.

Eu estou procurando uma maneira de mudar todo o texto da faixa, e não apenas uma única palavra, como eu estou recebendo o novo texto a partir de uma API independente, posso assumir que o novo texto eo texto de idade têm o mesmo número de palavras.

Isto é o que eu tenho até agora:

    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);
    }            

Mas por alguma razão, ele só consegue o primeiro executar, porque os restos de seleção gama sobre a palavra encontrada.

Edit: tem que, após cada executar, tive restaurar a posição final original da minha Faixa

.

Graças.

Foi útil?

Solução

Você não pode usar o método Execute para mudar o texto com a formatação. Você pode fazê-lo como:

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;
}

Talvez isso possa ajudá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top