パソコン悪戦苦闘記録

Wordマクロの単純な置換にはwdReplaceAll

 先日の記事において、
  文書中の金額表示をすべて赤色文字に変換するWordマクロを紹介しました。
 
 「金額赤色変換マクロ」の記事は、
   ⇒ こちらをご覧ください。
   
 先日の記事にも掲載していますが、マクロコードは次のとおりです。

Sub Kingaku()

Dim myR As Range
Set myR = ActiveDocument.Range(0, 0)

With myR.Find
  .Text = "[0-9,]{1,}円"
  .MatchWildcards = True
  Do While .Execute
   myR.Font.Color = vbRed
   myR.Collapse wdCollapseEnd
  Loop
End With

End Sub




 
 このコードでも、何ら問題はありません。
 ただ、このコードを改めて眺めていたら、少しですが、簡略化できることに気づきました。
 
 「Do While ~Loop」の箇所です。
 このDo構文は、条件が真の間、ループ内の処理を繰り返します。VBAの基本構文です。
 
 文書先頭から一つづつ検索して、検索される都度、複雑な処理を実行するならば、この構文で対処します。
 ですが、検索箇所のすべてに同一の置換処理をするだけであれば、「Do While ~Loop」構文までは不要です。単純置換ならば、コード1行で済みます。

 FindのExecuteメソッドの名前付き引数「Replace」に、wdReplaceAllを設定するのです。
   .Execute Replace:=wdReplaceAll 
と、これだけでOKです。この1行だけで、検索された箇所のすべてが、一括置換されます。
 こちらの書き方の方が、一般的と思われます。

 念のため、その方式で書き換えたコードの全文を掲載しておきます。
 
Sub Kingaku()

Dim myR As Range
Set myR = ActiveDocument.Range(0, 0)

With myR.Find
  .Text = "[0-9,]{1,}円"
  .MatchWildcards = True
  .Replacement.Font.Color = vbRed
  .Execute Replace:=wdReplaceAll
End With

End Sub

 Wordマクロによる置換処理に関しては、もう少し、記事にして紹介したいことがあります。
 よって、この続編を構想中です。


 
 
それでは、また次の記事で
goosyun
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事