Frage

Wer weiß, wie kann ich den Text eines Word.Range Objekts zu ändern, aber es immer noch zu halten Format? Zum Beispiel, wenn ich "dieser Text " und ich es ändern "dass txt ", txt noch fett gedruckt sein wird.

Ich bin auf der Suche nach einer Möglichkeit, den gesamten Text des Bereichs zu ändern, nicht nur ein einzelnes Wort, wie ich den neuen Text von einer unabhängigen API bekommen, kann ich davon ausgehen, dass der neue Text und der alte Text haben die gleiche Anzahl von Worten.

Das ist, was ich habe, so weit:

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

Aber aus irgendeinem Grunde, es gelingt nur in dem ersten Ausführen, da der Bereich Auswahl auf dem gefundene Wort bleibt.

Edit:. Bekam es, nach jedem ausführen, ich hatte die ursprüngliche Endposition meiner Reichweite wiederherstellen

Danke.

War es hilfreich?

Lösung

Sie können nicht die Execute Methode verwenden, um den Text mit der Formatierung zu ändern. Sie können es tun:

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

Vielleicht können Ihnen helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top