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

以前ご紹介いたしました「変更履歴の追記箇所に下線を引く」にいただきましたコメントから改良してみました。

ご助言をどうもありがとうございました。こうすれば、かなり応用がききますね。

このマクロでできること

変更履歴が記録された箇所に対して、文字列の入力、文字列の削除、それ以外の変更にわけて変更履歴の承諾をしながらマーキングをします。

文字列を入力した場合には、入力された文字に下線を引きます。

文字列を削除した場合には、削除された文字列の次の1文字に下線を引きます。

それ以外の変更(たとえば、書式変更)には、何もマーキングをしません。

(1)例として、以下の文章を用います

16-06-043

(2)変更履歴を記録しました

16-06-044

「あれは、自動車です。」として、「です」の部分のフォントの色を変更しました。

(3)マクロで処理をしました

16-06-045

書式変更した部分(フォントの色を変更した部分)には、下線でマーキングがされていません。

マクロの解説

hishiさんに教えていただいたとおり、Typeプロパティをしらべて、それぞれ別の処理をしています。

用途に応じて、処理を変えたらいいですね。

Typeプロパティの種類は、他にもたくさんありますので、必要な方はヘルプでご確認ください。

マクロ


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

 Dim myRev As Revision

 For Each myRev In ActiveDocument.Revisions
  
  Select Case myRev.Type
   
   '挿入の場合
   Case wdRevisionInsert
    With myRev.Range
     .Font.Underline = wdUnderlineSingle
     .Revisions.AcceptAll
    End With
   
   '削除の場合
   Case wdRevisionDelete
    With myRev.Range
     .MoveEnd unit:=wdCharacter, Count:=1
     .Font.Underline = wdUnderlineSingle
     .Revisions.AcceptAll
    End With
    
   'それ以外の場合
   Case Else
    With myRev.Range
     .Revisions.AcceptAll
    End With
    
  End Select
  
 Next

 Set myRev = Nothing

End Sub

関連記事

変更履歴の追記箇所に下線を引くマクロ

変更履歴の追記箇所に下線を引くマクロ(その2)  (6/20/2012:改良版です!)

変更履歴の追記箇所に下線を引くマクロ(その3)  (3/18/2013:英文明細書の補正用)

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

マクロコードの登録方法

ツールバーのボタン登録

コメント

  1. marc0 より:

    変更履歴の表示モードが「変更履歴を吹き出しに表示」になっていると、追記箇所には下線を引いてくれますが削除箇所には下線が引かれません。Rangeオブジェクトの中身を色々と見てみましたが、上記のモードでは削除箇所の文字列が本文から切り離された状態(正しい表現か分かりません)で管理されており、MoveEndやNextを使っても削除箇所の次の文字に辿りつけないようです。
    上記コードに次の1行を追加したところ、うまくいきました。
    ActiveWindow.View.MarkupMode = wdInLineRevisions

    • 新田順也 より:

      marc0さん
      コメントをどうもありがとうございました。
      おっしゃるとおり、ActiveWindow.View.MarkupMode = wdInLineRevisions を一番先頭に追加したところ正常に動きました。
      検証時に「すべての変更履歴を本文中に表示」としていたために気がつきませんでした。
      今後のマクロで修正いたします。

トップへ戻る