• ベストアンサー

WORD VBA 特定文字色の前後にテキスト挿入

WORD文章中の特定の文字色が設定されている部分を探して、 その部分の前と後にテキストを挿入したいです。 例)  (1) 文章中の赤字で書かれている言葉を検索  (2) その言葉の前に「赤字」、後ろに「赤字終わり」というテキストを挿入 Word VBAで可能でしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> 色が2種類(例:赤と青)ある場合は、どうコードを追加すればいいでしょうか 色の追加を最初に追加設定だけでできるようにするとTestのような感じでいけると思います。単純なものだとTest2でいけると思います。 色指定のwdColorBlueはパレットで標準の青指定した色と違う色なので12611584にします。 Sub Test() Dim mRng As Range Dim mStr As Variant, mFindColor As Variant Dim i As Long mStr = Array("赤字終わり", "青字終わり") '↑ここに記載する文字列を設定します。結果の各文字色の前に記載する文字列は「字」までの文字列になります。 mFindColor = Array(wdColorRed, 12611584) '↑ここに検索する色を設定します。文字列と順番を合わせます。 If UBound(mStr) <> UBound(mFindColor) Then MsgBox "文字指定と色指定の数が一致していません", vbCritical Exit Sub End If For i = LBound(mStr) To UBound(mStr) Set mRng = ActiveDocument.Range With mRng.Find .Font.Color = mFindColor(i) Do While .Execute = True mRng.Text = Left(mStr(i), InStr(mStr(i), "字")) & mRng.Text & mStr(i) Loop End With Set mRng = Nothing Next End Sub 単純にだと以下のようにすればいけると思います。 色指定のwdColorBlueはパレットで標準の青指定した色と違う色なので12611584にします。 Sub Test2() Dim mRng As Range Set mRng = ActiveDocument.Range With mRng.Find .Font.Color = wdColorRed Do While .Execute = True mRng.Text = "赤字" & mRng.Text & "赤字終わり" Loop End With Set mRng = Nothing Set mRng = ActiveDocument.Range With mRng.Find .Font.Color = 12611584 'wdColorBlueは違う色 Do While .Execute = True mRng.Text = "青字" & mRng.Text & "青字終わり" Loop End With Set mRng = Nothing End Sub

mimi0707
質問者

お礼

動作しました!わかりやすく丁寧なご説明を本当にありがとうございます! 大変助かりました!

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

これでいけると思います。 Sub test() Dim mRng As Range Set mRng = ActiveDocument.Range With mRng.Find .Font.Color = wdColorRed Do While .Execute = True mRng.Text = "赤字" & mRng.Text & "赤字終わり" Loop End With End Sub

mimi0707
質問者

補足

ご回答ありがとうございます!上手く動きました! もう1つ質問なのですが、色が2種類(例:赤と青)ある場合は、どうコードを追加すればいいでしょうか。自分でやってみたのですが、うまくいきません。 赤字を探す → 赤字の前に「赤字」赤字の後に「赤字終わり」 青字を探す → 青字の前に「青字」青字の後に「青字終わり」 何度もすみませんが、よろしくお願いします。

関連するQ&A