【Word VBA】変更箇所を蛍光ペンで着色するWordマクロ

先日のセミナー(【開催報告】03/08(土) Wordをマクロでチューニング!Wordマクロ入門講座 )にて、受講生からいただいた質問です。

その方は、上司の指示通り書類(Word文書)を修正したときに、修正個所(追記個所)を蛍光ペンで着色して上司に見せるそうです。

上司が「修正個所だけチェックしたいから」といっているそうです。

その上司の気持ちもわかります!でも、修正個所をすべて蛍光ペンで探して着色しなおすという作業もまた大変な手間ですね。

修正時には、修正する文字の入力や削除に気持ちが向いているはずです。どこを修正したか?なんてことは気にしていないと思います。

そんなわけで、書類で複数個所を修正した場合には、その修正個所を探して蛍光ペンで着色することに大きなストレスと時間をかけているとのことでした。

このお題をいただいて、今回のマクロを作りました。

セミナー中はもっと単純なものを提案いたしました。

その方からはかなり喜んでいただきました。こういう体験って、うれしいですね。

このマクロでできること

変更履歴のある書類を開き、最終版を保存してから実行します。

新たな文書が開き、変更履歴に記録された個所のうち、追記部分だけ蛍光ペンの「明るい緑」で表示されます。

これはあくまでも確認用の書類です。もともと記載されていた蛍光ペン部分はすべて解除します。

修正個所だけが蛍光ペンで着色されます。

マクロの解説

12行目、17行目:現在文書が保存されている場合に現在文書から新規文書を作成します。

以前の記事「【コード】現在の文書から新規文書を作成する 」を利用して、現在文書からチェック用の新規文書を作成します。

書類の保存状態の確認のため、Saved プロパティを利用しました。

31行目~50行目:挿入個所を明るい蛍光ペンで着色します。

以前の記事「【コード】変更履歴の追記箇所に下線を引くマクロ(その3)」を用いて一部変更しました。

今回は下線ではなく蛍光ペンです。

マクロ


Sub 変更履歴_追記箇所を蛍光ペンの黄色にする()

 Dim myRev As Revision
 Dim newDoc As Document  'チェック用文書
 
 '変更履歴の記録をオフにする
 ActiveDocument.TrackRevisions = False
 
 '文書が保存されている場合に実行
 If ActiveDocument.Path <> "" Then
  If ActiveDocument.Saved = True Then
   Set newDoc = Documents.Add(Template:=ActiveDocument.FullName)
  Else
   If MsgBox("文書を保存してから実行します。" & vbCr & _
        "保存しますか?", vbYesNo, "実行前の確認") = vbYes Then
    ActiveDocument.Save
    Set newDoc = Documents.Add(Template:=ActiveDocument.FullName)
   Else
    Exit Sub
   End If
  End If
 Else
  MsgBox "現在のファイルを保存してから実行してください。"
  Exit Sub
 End If

 'チェック用文書で蛍光ペンを解除
 newDoc.Range.HighlightColorIndex = wdNoHighlight
 
 '変更個所を反映させ、挿入部分に蛍光ペンで着色
 For Each myRev In newDoc.Revisions

  Select Case myRev.Type

   '挿入の場合
   Case wdRevisionInsert
    With myRev.Range
     .HighlightColorIndex = wdBrightGreen
     .Revisions.AcceptAll
    End With

   'それ以外の場合
   Case Else
    With myRev.Range
     .Revisions.AcceptAll
    End With
 
  End Select

 Next

 Set myRev = Nothing
 Set newDoc = Nothing

End Sub

トップへ戻る