0 votes

Comment modifier le texte de Word.Range sans perdre le format ?

Quelqu'un sait-il comment modifier le texte d'un objet Word.Range tout en conservant son format ? Par exemple, si j'ai "this texte " et je le change en "que txt ",

Je cherche un moyen de modifier l'ensemble du texte de la plage, et pas seulement un seul mot. Comme je reçois le nouveau texte d'une API indépendante, je peux supposer que le nouveau texte et l'ancien texte ont le même nombre de mots.

C'est ce que j'ai obtenu jusqu'à présent :

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

Mais pour une raison quelconque, elle ne réussit qu'à la première exécution, car la sélection de la plage reste sur le mot trouvé.

Edit : je l'ai eu, après chaque exécution, j'ai dû restaurer la position finale originale de mon Range.

Merci.

0voto

Vous ne pouvez pas utiliser la méthode execute pour changer le texte avec le format. Vous pouvez le faire comme suit 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, ref missing, ref missing) //trouver ici ce que vous voulez trouver. //si cette méthode renvoie vrai, et vous obtiendrez rng à l'emplacement de la recherche. if(rng.Find.Found) { rng.Text='sth' ; rng.Bold=0 ; } Ceci peut peut-être vous aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X