プロが教える店舗&オフィスのセキュリティ対策術

WORDの文章で文字検索ウインドウ枠内に入力した文字全てをツールバーで指定した色に変える作業を文末まで自動的に繰り返したいのですが、このとき FOR文をどういう式としたらよいですか?
特に文末でやめるには?
また FOR の変数の種類は?
1回のみの色替えのマクロ記録は成功しておりますが、文末まで自動で行いたいのです。よろしくお願いします。

A 回答 (3件)

マクロの記録が使えないですか。


文章全体を範囲指定
編集ー置換ー検索する文字列ーー(例)東京 書式(下に方の書式ボタンを押す。そのとき、検索する文字列のボックスをFOCUSしておくこと) 自動
置換後の文字列ーー(例)東京(同じ文字列を指定) 書式 (例)赤色
すべて置換
ーーー
やってみると、マクロの記録が出来ましたよ。
結果見れば判るとおり、FORNEXTやFOR EACHを使わないやり方で、これがVBAの理想ですから。wdReplaceAllで繰り返し的処理をやってくれるのですから。
    • good
    • 0
この回答へのお礼

マクロ化までしなくても、ご指摘の置換だけで可能になりました。回答ありがとうございました。

お礼日時:2009/09/28 22:31

こんにちは。



>FOR文をどういう式としたらよいですか?
カウントしなければ、必要ないです。

>文字検索ウインドウ枠内に入力した文字全てをツールバーで

ツールバーで指定するという意味が良く分かってはいませんが、もしかしたら、蛍光ペンのことでしょうか。

それと、残念ながら、記録マクロで取れたと思っても、書式の色のプロパティが入らないようですので、そのマクロは有効な動きをしません。ただ、ダイアログを呼び出し、文字を入れるだけの作業なら、ショートカットでよいと思います。

'-------------------------------------------
'ThisDocument モジュール
'-------------------------------------------
'書式バーの蛍光ペンでは、黄色がデフォルトになっています。

Sub FormatReplacing()
Dim Ret As Variant
  Selection.HomeKey Unit:=wdStory
  Ret = InputBox("検索用語を入れてください。")
  If StrPtr(Ret) = 0 Or Ret = "" Then Exit Sub
  
  With ActiveDocument.Content.Find
    .ClearFormatting
    .Text = Ret
    .Wrap = wdFindContinue
    .MatchFuzzy = True
    .MatchWildcards = False
    .Font.ColorIndex = wdAuto
    With .Replacement
      .ClearFormatting
      .Text = "^&"
      .Highlight = True '蛍光ペン
      '.Font.ColorIndex = wdRed ''フォント
    End With
    .Execute Replace:=wdReplaceAll
  End With
End Sub
    • good
    • 0
この回答へのお礼

詳しいマクロを紹介いただきありがとうございました。

お礼日時:2009/09/28 22:33

VBEのヘルプから、Find.Foundプロパティのサンプルコードを使ってDo・・・Loopしてみました。



Sub test1()
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
Do
.Execute findText:="あ", Format:=True, Forward:=True
If .Found = True Then
Selection.Font.Color = wdColorRed
Else
Exit Do
End If
Loop
End With
End Sub
    • good
    • 1
この回答へのお礼

詳しいマクロを紹介いただきありがとうございました。

お礼日時:2009/09/28 22:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!