Word VBA 文書の半角文字に色をつけ、かつ、全角に変換する | toshiのブログ

toshiのブログ

日頃、科学技術について調査していることや趣味でやっていることなどを紹介していきます。

Wordを使って、全角文字だけで書かなければならない作業があったのですが、誤って半角文字が紛れ込んでしまい、後で探し出して修正するのにえらい時間がかかってしまった。この作業が今後、たびたび発生するので、なんとしても自動化が必要になり、VBAでプログラムを開発しました。

下記は、Word内で動作するプログラムです。

 

Option Explicit

Sub halfWidthString2FullWidth()

'仕様
'半角文字を赤色に変え、かつ、全角に変換する

Dim ss As Long                                                       'カーソル位置
  
'---- 画面更新の停止(高速化)
Application.ScreenUpdating = False
  
'---- 文字列選択範囲を初期化
Selection.Start = 0
Selection.End = 0

Do
  '---- カーソル位置を取得する
  ss = Selection.Start

  '---- カーソル位置から2文字選択する
  Selection.Start = ss
  Selection.End = ss + 2
 
  '---- 選択文字列が、2文字半角カナ(濁点、半濁点)ならば全角化する
  If Selection.Range.CharacterWidth = wdWidthHalfWidth Then          '半角ならば
    Selection.Range.Font.ColorIndex = wdRed                          '選択文字の色を赤色にする
    Selection.Range.CharacterWidth = wdWidthFullWidth                '文字のサイズを全角にする
  
  '---- 選択文字が、1文字半角ならば全角化する
  Else
    '---- カーソル位置から1文字選択する
    Selection.Start = ss
    Selection.End = ss + 1

    If Selection.Range.CharacterWidth = wdWidthHalfWidth Then        '半角ならば
      Selection.Range.Font.ColorIndex = wdRed                        '選択文字の色を赤色にする
      Selection.Range.CharacterWidth = wdWidthFullWidth              '文字のサイズを全角にする
    
    End If
  End If
  
  '---- カーソルを右に1つ移動する
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  
  '---- カーソルが移動していなければ処理終了
  If Selection.Start = ss Then Exit Do
Loop

'---- 画面更新の再開
Application.ScreenUpdating = True
  
End Sub