2016年10月24日

Wordで丸数字(1から35まで)を検索してハイライトするマクロ

翻訳でナンバリング原稿を送られ、丸数字でナンバリングして訳すことが多々ある。
で、そのナンバリング(丸数字、@とかAとか)をハイライトするマクロを作った。
ちなみに丸数字は1から35まで。36から50までは下記のPDFでUnicodeを拾って、21から35までと同様の方法でできるはず。ただ、こんな風にループにせずに、@からSまでと同じく範囲を指定して検索できる方法があれば、知りたいもんだ。
http://www.unicode.org/charts/PDF/U3200.pdf

=======ここからマクロ=====
'1〜35までの丸数字をハイライトするマクロ
'
'ユニコードの入れ物の定義
Dim Word1 As Long

'スピードを速くするため画面更新を停止
Application.ScreenUpdating = False

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

'丸数字(@〜S)を検索して黄色ハイライト
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[@-S]"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchByte = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With

'丸数字の21から35を検索して黄色ハイライト

'検索する丸数字の最初のユニコード
Word1 = &H3251&

'ユニコードが一定の値になるまでループ
Do While Word1 < &H3261&

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

Selection.Find.ClearFormatting
With Selection.Find
.Text = ChrW(Word1)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
Do While .Execute = True
With Selection
.Range.HighlightColorIndex = wdYellow
.Collapse direction:=wdCollapseEnd
End With
Loop
End With

'次の検索すべきユニコードに変える
Word1 = Word1 + 1

Loop

'画面更新を再開
Application.ScreenUpdating = True

'カーソルをページ先頭に移動
Selection.HomeKey unit:=wdStory

=====ここまで====
posted by 完治 at 08:57| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。