2008-10-26 8 views
0

Quelqu'un sait comment changer le texte d'un objet Word.Range tout en conservant son format? Par exemple si j'ai "ce texte" et je le change en "que txt", txt sera toujours en gras.Comment changer le texte Word.Range sans perdre le format

Je cherche un moyen de changer le texte entier de la gamme, 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 avoir le même nombre de mots.

C'est ce que je suis arrivé à ce jour:

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, il ne réussit qu'à la première exécution, parce que la sélection de la plage reste sur le mot trouvé. Edit: je l'ai eu, après chaque exécution, j'avais restaurer la position de fin d'origine de ma gamme.

Merci.

Répondre

0

Vous ne pouvez pas utiliser la méthode Execute pour modifier le texte avec le formatage. Vous pouvez le faire comme:

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

Peut-être que cela peut vous aider.

Questions connexes