【Word VBA】変更履歴の追記箇所に下線を引く

昨日、Wordマクロセミナーを開催いたしました。

セミナーにて、特許事務所で日本語の特許明細書を作成する技術者の方からご要望をいただき作ってみました。

私は、変更履歴を使っていないのであまり考えたことがなかったのですが、今回ご案内するマクロは、特許技術者の方々にとって、かなり役に立つのではないかなと思いました。

(追記)
【コード】変更履歴の追記箇所に下線を引く(その2)(6/20/2012:改良版)

【コード】変更履歴の追記箇所に下線を引く(その3)(3/18/2013:英文明細書の補正用)

このマクロでできること

本文中に変更履歴機能で履歴を記録した箇所のうち、すべての変更箇所を承諾すると同時に、文字の「追記」や書式の「変更」部分の文字列に対して下線を引きます。

書式の変更については、下線が引かれてしまうので注意が必要です。下線を解除した「書式変更」の場合、下線を追加してしまいますので(笑)。

今回想定している用途は、特許庁への中間処理の書類において、追記箇所に下線を引くというものです。

削除箇所は下線が引けませんが、文字列を削除するときに、削除した文字の前か後の一文字を余分に削除して、削除した1文字を追記すればいいですよね。

電気自動車の「電気」を削除して「自動車」にする場合。

(1)マクロ実行前

16-06-041

(2)マクロ実行後

16-06-042

そうすれば、追記した1文字分に下線が引かれます。特許庁のルールでは、削除箇所については、前か後に下線がひかれていればいいはずなので、これで対処できます。

マクロの解説

これまた、For Each…Next ステートメントの典型例ですね。(5行目~10行目)

このような場合、処理対象とするオブジェクトを正確に選ぶことが大切になります。

今回の場合、変更履歴箇所が処理対象になりますね。

変更履歴に関する操作をマクロの記録機能を使ってコード化すると、わかりますね。

今回は、「変更履歴の承諾」の操作をするうちに、オブジェクトの候補を特定できました。

マクロ


Sub 変更履歴_追記箇所に下線をひくマクロ()

 Dim myRev As Revision

 For Each myRev In ActiveDocument.Revisions
  With myRev.Range
   .Font.Underline = wdUnderlineSingle
   .Revisions.AcceptAll
  End With
 Next
 Set myRev = Nothing

End Sub

関連記事

初めての方へ(ブログの目次)

マクロコードの登録方法

ツールバーのボタン登録

トップへ戻る