【Word VBA】英文クレーム内の用語を着色するWordマクロ

2014年11月30日

Wordマクロセミナー受講生の方からのご依頼で作ってみました。

特許の英訳で使うことを想定しています。

特許のクレームでは、初出名詞と既出名詞に気をつけます。その名詞の冠詞が変わるからです。

数十のクレーム、または100を超えるようなクレームになると、このチェックが非常に大変です。

じっくり読んでいればわかりますが、時間がないときにはチェックが甘くなりがちです。

そのようなときに、少しだけお役に立てるかもしれないマクロです。

 

このマクロの原理は簡単なので、工夫次第で用途は広がると思います

このマクロでできること

文字列を選択した状態でマクロを実行すると、選択した部分から先頭方向に向かって「What is claimed is」と書かれた部分までの範囲で、選択した文字列を蛍光ペン黄色で着色します。

「What is claimed is」というのは、クレームの開始を示す見出しです。

ですから、クレーム記載範囲で、選択した文字列(=名詞)が既出なのかどうかを色をつけて判定できます。

(実行前)

(実行後)

マクロの解説

最初に範囲の先頭と末尾を決めて、その中で蛍光ペンの着色をします。

今回は、「What is claimed is」を先頭の言葉にしましたが、別の言葉でもいいです。

特許以外でしたら、第1章等、用途に応じて別の言葉を使ってみてください。

マクロ


Sub 英文クレーム内の用語を着色()

 Dim Pos_Start As Long
 Dim Pos_End As Long
 Dim myTargetRange As Range
 Dim myRange As Range
 Dim myColor As String
 Dim myKW As String

 'キーワードが選択されていない場合
 If Selection.Type = wdSelectionIP Then
  MsgBox "キーワードを選択してください。"
  Exit Sub
 Else
 'キーワードが選択されている場合
  myKW = Trim(Selection.Text)
 End If
 
 '現在の蛍光ペンの色を保存
 myColor = Options.DefaultHighlightColorIndex
 
 '蛍光ペンの色を黄色に設定
 Options.DefaultHighlightColorIndex = wdYellow
 
 'myRange(オブジェクト変数)を設定
 Set myRange = ActiveDocument.Range(0, 0)
 
 '範囲の先頭位置を取得
 With myRange.Find
  .Text = "What is claimed is" '検索する文字列
  .Forward = True
  .Wrap = wdFindStop
  .Format = False       '書式の設定
  .MatchCase = False     '大文字と小文字の区別する
  .MatchWholeWord = False   '完全に一致する単語だけを検索する
  .MatchAllWordForms = False '英単語の異なる活用形を検索する
  .MatchSoundsLike = False  'あいまい検索(英)
  .MatchFuzzy = False     'あいまい検索(日)
  .MatchWildcards = False   'ワイルドカードを使用する
  .MatchByte = True      '半角と全角を区別する
  If .Execute = True Then
   Pos_Start = myRange.Start
  Else
   MsgBox "範囲の先頭が見つからないため終了します。"
   Exit Sub
  End If
 End With
 
 '範囲の末尾位置を取得
 Pos_End = Selection.Start
 
 '範囲を指定
 Set myTargetRange = ActiveDocument.Range(Pos_Start, Pos_End)
 
 '範囲内の蛍光ペンを削除
 myTargetRange.HighlightColorIndex = wdNoHighlight
 
 '一括置換を実行(「検索と置換」ダイアログボックスの設定)
 With myTargetRange.Find
  .Text = myKW '検索する文字列
  .Replacement.Text = ""  '置換後の文字列(空欄でOK)
  .Replacement.Highlight = True '置換後の文字列の蛍光ペンをオン
  .Forward = True
  .Wrap = wdFindStop
  .Format = True       '書式の設定をオン
  .MatchCase = False     '大文字と小文字の区別する
  .MatchWholeWord = False   '完全に一致する単語だけを検索する
  .MatchAllWordForms = False '英単語の異なる活用形を検索する
  .MatchSoundsLike = False  'あいまい検索(英)
  .MatchFuzzy = False     'あいまい検索(日)
  .MatchWildcards = False   'ワイルドカードを使用する
  .MatchByte = True      '半角と全角を区別する
  .Execute Replace:=wdReplaceAll
 End With
 
 '蛍光ペンの色を元に戻す
 Options.DefaultHighlightColorIndex = myColor
 
 'myRangeを解放
 Set myRange = Nothing
 
 'myTargetRangeを解放
 Set myTargetRange = Nothing
 
End Sub

-コード
-, ,