• ベストアンサー

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

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答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
  • ベストアンサー率65% (1606/2443)
回答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

  • Word2003のVBAで特定の文字列を削除したい

    Word2003のVBA超初級者です。 赤字で一重取消線の文字を検索し、その文字列を置換で削除したいのですが、本やネットで検索してもよくわかりません。 どうぞよろしくお願いいたします。

  • ワードのVBAについて

    文章中にある「#」という文字を「^」に変更するVBAを書きたいのですが四苦八苦しております。 置換では変更後の文字を「^」とするのがWordの特性なのか、できないため、文章中「#」が何文字あるのかをカウントし、その後、そのカウントした回数分だけloop分にて「#」の検索と「^」への上書きを繰り返すというVBAを作ろうかと思っております。 教えていただきたいのは、今回の質問で言えば「#」なのですが、特定の文字が何個あるのかを数える為の記述方法です。 Word上で「#」を適当な文字に置換して、そのときに表示されるメッセージ上の数字をVBAのloopの回数としてその都度書き込めばいいと言ってしまえばそれまでなのですが、できればVBAの作業のみで完結させたいと思っております。 お分かりの方いらしたらよろしくお願いいたします。

  • word 2003で、赤い文字(あるいは、特定の色)だけ印刷しない、と

    word 2003で、赤い文字(あるいは、特定の色)だけ印刷しない、ということは可能ですか。 例えば、解答用紙なんかで、模範解答のある解答を赤字でつくって、その後、印刷をするとき、赤字の部分だけ印刷せず、空欄のままにしたいのです。 色々さがしてみましたが、分かりませんでした。ですので、赤字の部分を削除して、またスペースを入れて、、、、という手間が省けたら、と思っています 教えて頂けると有り難いです。

  • WordでのVBAについて

    お世話になります。 Word2010 ExcelVBAだとセルの位置を指定して、目的の場所に特定の 文字列を挿入するようなことができますが、Wordの場合は どのようにやるのでしょうか。 例えば、10行目の右端に「TEST」という文字列を挿入 したい場合や、特定の位置から5cmの罫線を引きたい場合 など。 勉強不足で大変恐縮ですが、ご教示の程、宜しくお願い致します。 ※可能であれば、上記の例で具体的にVBAで教えて頂けると  幸いです。

  • Wordへの表の挿入について

    Wordへの表の挿入について 大学の通信課程の情報のレポート課題をしているのですが それ用のテキストがWord2007対応のもので 解説の写真等も、全部Word2007なので、私のパソコンはWord2003なので 全然違って作業が滞って困っています。 で、今止まっているのは 見積書の作成なのですが まず、Wordに文章だけを入力して (日付、会社名、品名、価格等々) を入力し 表になる部分は、Tabキーで間隔を開けて打ち込み 文章部分が入力し終わったら 表の部分を黒く選択して、表を挿入させるという感じだったのですが 添付写真の部分(写真はテキストを取ったものです。なので完成品はこうなるというものです) の一番下の 「備考:ご注文の際には、必ず見積番号を…」 という部分を四角くくくるのですが これのやり方が全くテキストに載っていなくて困っています。 同じように表で挿入するのかと思いきや、 (Word上では 備考: ご注文の際には、必ず見積番号を御書き添え下さい。) と入力するようになっています。 テキスト通りのやり方でやっているのですが、 テキストにはまず、見積書の文字列だけを入力してくださいと書いてあり (余白やフォント等も指定) そのページに文字列だけを入力したものが載っているので、その通りに打ち込んでいます。 で、その後、表を入れて、 ただ備考の部分だけは表ではなく四角くくくるようになっていて やり方がわかりません。 どうすればいいでしょうか? 表の挿入で、挿入してから表の大きさを変えればどうにかなるかなと思ったのですが 文字列入力の時点で備考は2列で入力されているので どうしても表を挿入するとなると2列分の表が入ってきてしまって、完成図のようになりません。 どうしたらいいでしょうか?教えてください。

  • word2007の文字挿入

    wordの文字挿入で困っています。 例えば「…ありました。そこでわたしは…」という文章の 「そこで」と「わたしは」の間に「次に」という単語を挿入したいと思い カーソルを「そこで」と「わたしは」の間にもってきて「つぎに」と入力すると 変換領域(青くなった領域)が「わたしは」の「わ」まで含まれてしまい、「つぎにわ」となってしまいます。 また「つ」だけ入力した段階で青い領域が出てきてしまいます。 (「つ」だけの時には「つわ」の部分がすでに青いのです) これを挿入してももともと入力してあった文字に影響しないようにしたいのですが、どうしたらよいでしょうか? 文章が分かりにくくて申し訳ありません。 よろしくお願いします。

  • VBA でセルの文字列に"-"等の文字を挿入したい

    VBA でセルの文字列に"-"等の文字を挿入したい エクセルでA列に品番がずらっと並んでいる状態です。 この品番がすべて"-"が抜けています。 頭から5文字目の後ろに"-"を挿入したいのですがどのようにすればよいでしょうか? 例 55548855→55548-55 また 55548-55→55548855 のように"-"を抜く方もわかれば教えてください。 よろしくお願いします。

  • テキストファイルの特定行、特定列に文字を挿入

    テキストファイルがあるとします。 ある特定の行、特定の列に文字を挿入したいです。 又は、あらかじめ、特定の文字を書いておき、 置換により文字を置き換える方法でも良いです。 これを、コマンドを使用し、batファイルで自動的に 実行したいです。 どのような方法があるでしょう?

  • WORDで文字を挿入するとき

    WORDで文字を挿入するとその後の文字が挿入した分消えてしまうのですが、ずらすにはどうしたらいいのでしょうか?

  • Wordで、挿入を止めたい

    Word2003を使っています。 普通(かどうか知りませんが)、 マウスで文章の一部を反転表示させてから文字を打ち込むと、 反転された部分に上書きされて入力されると思うのですが、 現在、そうなっておりません。 反転させた最初の文字の前に必ず挿入されてしまいます。 「12345」と打った後、「12」を反転させて「あ」と打った場合、 「あ345」となって欲しいのですが、「あ12345」となってしまいます。 どこの設定を修正すればいいのでしょうか。 何かのキーを押して設定してしまったらしく、戻せません。 また、挿入するかしないかのON/OFFかと思ったのでInsertキーは試したのですが反応はありません。

専門家に質問してみよう