【コード】1桁の半角数字を全角にするWordマクロ

先日のWordマクロセミナー の受講生からご要望をいただいたマクロです。

セミナー当日は、「1桁の半角数字を探すマクロ」をその場でマクロの記録で作ってみました。

その方の職場では、1桁の数字は全角として、2桁以上の数字は半角とするそうなのです。

この記事では、少し踏み込んで、1桁の半角数字を全角にするマクロにしました。

このマクロでできること

本文中にある1桁の半角数字を全角に変換します。

変換個所を蛍光ペン(明るい緑)で着色します。

マクロの解説

1桁の半角数字をワイルドカードを用いて探しています。(8行目)

[!0-9][0-9][!0-9]

見ればそのとおりの記述です。

SetRange メソッドを用いて、選択範囲を変えてみました。

マクロ


Sub 一桁半角数字を全角にするマクロ()

 Dim myRange As Range
 
 Set myRange = ActiveDocument.Range(0, 0)
 
 With myRange.Find
  .Text = "[!0-9][0-9][!0-9]"
  .Replacement.Text = ""
  .Forward = True
  .Wrap = wdFindStop
  .MatchCase = False
  .MatchWholeWord = False
  .MatchByte = False
  .MatchAllWordForms = False
  .MatchSoundsLike = False
  .MatchFuzzy = False
  .MatchWildcards = True
  
  Do While .Execute = True
   With myRange
    '選択範囲を変更
    .SetRange Start:=.Start + 1, End:=.End - 1
    
    '全角化
    .CharacterWidth = wdWidthFullWidth
    
    '蛍光ペンで着色
    .HighlightColorIndex = wdBrightGreen
    
    '選択解除
    .Collapse Direction:=wdCollapseEnd
   End With
  Loop
  
  'ループ処理の後の一休み
  DoEvents
  
 End With

 'Rangeオブジェクトの解放
 Set myRange = Nothing

End Sub

コメント

  • 2. Re:Re:【Wordマクロ】1桁の半角数字を全角にする
    >kinuasaさん

    コメントありがとうございます!
    これまた技ありですね。
    1桁以上の数字を見つけて、1桁かどうかを確認してから処理。いいですね。

    そういえば、本件は先日の社内セミナーでも同じ指摘がありました(笑)。

    段落先頭の特定も、ワイルドカードだと^13を検索する文字列の先頭にいれなくてはならないので、本文の1文字目は見つけられないので別の処理が必要だったりしますね。

    ブログの紹介もありがとうございました。

  • 1. Re:【Wordマクロ】1桁の半角数字を全角にする
    きぬあさです。

    今日↓の質問でたまたま気が付いたのですが、検索条件が「[!0-9][0-9][!0-9]」だと、文頭の数字には引っかからないのではないでしょうか?

    http://answers.microsoft.com/thread/79d8a55c-5352-447f-b80e-934a7975745a

    連続数字を検索して文字数1の場合のみ処理、なんて方法も考えたのですが、動作は未確認です(^^;

    kinuasa

トップへ戻る