セミナーの受講生から、特許明細書の段落番号(半角の角括弧で囲まれた4桁数字)を1つずつ太字にしていると聞きました。クライアントによってはそのような作業があるのですね。
この処理を自動化するためにマクロを作ってみました。英文明細書用です。
<目次>
このマクロでできること
(マクロ実行前)
段落番号の前にタブや半角スペース、インデントがある場合を想定しています。
(マクロ実行後)
段落番号だけを太字・蛍光ペンで処理します。
マクロの解説
ワイルドカードを使って段落番号を探します。見つかったら太字にして蛍光ペンで着色します。
まず最初の処理で、段落番号の前にスペースやタブ記号がある場合を対象にします(13行目)。
検索する文字列:^13[ ^t]{1,}\[[0-9]{4}\]
特許明細書の段落番号は段落の先頭に記載されているので、改行記号(^13)から始まる記述となります。改行記号のあとにタブやスペースが1つ以上あるという記述です。
2つ目の処理で、段落番号の前にスペースやタブがない場合を対象にします(42行目)。
検索する文字列:^13\[[0-9]{4}\
太字にしたり着色したりするのは段落番号の箇所だけなので、SetRange メソッドで範囲を設定します。
あと、29行目と58行目のCollapse メソッドは今回のプログラムではなくてもいいのですが、癖として書くようにすればいいと思います。これを書いておくと、想定していなかった無限ループを回避できます。
また、30行目と59行目のDoEvents 関数もなくてもいいのですが、ある方が処理が安定すると思います。特に長い文書の一括処理をする場合には必須です。
マクロ
Sub 特許段落番号を太字化_英文()
Dim myRange As Range
'-------------------------------------------
'処理1 段落先頭にスペースがある場合
'-------------------------------------------
'オブジェクト変数の設定
Set myRange = ActiveDocument.Range(0, 0)
'太字化
With myRange.Find
.Text = "^13[ ^t]{1,}\[[0-9]{4}\]"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False '大文字と小文字の区別する
.MatchWholeWord = False '完全に一致する単語だけを検索する
.MatchByte = False '半角と全角を区別する
.MatchAllWordForms = False '英単語の異なる活用形を検索する
.MatchSoundsLike = False 'あいまい検索(英)
.MatchFuzzy = False 'あいまい検索(日)
.MatchWildcards = True 'ワイルドカードを使用する
Do While .Execute = True
With myRange
.SetRange .End - 6, .End '範囲を段落番号に設定
.Font.Bold = True '太字
.HighlightColorIndex = wdBrightGreen '蛍光ペン:明るい緑
.Collapse wdCollapseEnd
DoEvents
End With
Loop
End With
'-------------------------------------------
'処理2 段落先頭にスペースがない場合
'-------------------------------------------
'オブジェクト変数の設定
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "^13\[[0-9]{4}\]"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False '大文字と小文字の区別する
.MatchWholeWord = False '完全に一致する単語だけを検索する
.MatchByte = False '半角と全角を区別する
.MatchAllWordForms = False '英単語の異なる活用形を検索する
.MatchSoundsLike = False 'あいまい検索(英)
.MatchFuzzy = False 'あいまい検索(日)
.MatchWildcards = True 'ワイルドカードを使用する
Do While .Execute = True
With myRange
.SetRange .End - 6, .End '範囲を段落番号に設定
.Font.Bold = True '太字
.HighlightColorIndex = wdBrightGreen '蛍光ペン:明るい緑
.Collapse wdCollapseEnd
DoEvents
End With
Loop
End With
'-------------------------------------------
'後処理
'-------------------------------------------
Set myRange = Nothing
End Sub







