質問

Word.Rangeオブジェクトのテキストを変更する方法は誰でも知っていますが、それでもフォーマットを維持できますか? たとえば、" this text "がある場合それを" that 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);
    }            

しかし、何らかの理由で、範囲の選択は見つかった単語に残るため、最初の実行でのみ成功します。

編集:それを取得し、実行するたびに、範囲の元の終了位置を復元しました。

ありがとう。

役に立ちましたか?

解決

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

たぶんこれはあなたを助けることができる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top