【Word VBA】書式変更の変更履歴だけを承諾する

先日、法務関係の方々が集まる勉強会でWordの使い方について15分発表をさせていただきました。

その後の懇親会で、Wordの変更履歴の話をしていたときに、「書式変更の履歴が残ると、必要な部分(挿入したコメント、削除した文字列など)が「吹き出し」で隠れてしまうことがあって不便である」とのことでした。

あ、そのとおりですね。ブログネタをいただきありがとうございました(笑)。

この記事では、書式の変更履歴が残っているときに、書式の変更履歴だけを承認するマクロを紹介します。

ちなみに、「書式の変更履歴を記録しない」ためのオプション設定もあり、これを設定すれば文字書式や段落書式の変更は履歴に残りません。そうすれば、そもそもこのマクロは必要なくなります。これは、別の記事で紹介いたします。

困ったこと

[変更履歴の記録]をオンにして書類を修正すると、以下のように「吹き出し」が列挙されてしまうことがあります。

これは、[変更履歴を吹き出しに表示]となっている場合を示しています。

2015-11-21 23-32-00

この状態の場合、変更箇所で特に重要な「削除箇所」や「挿入箇所」が他の「吹き出し」に埋もれてしまいます。こんな経験はありませんか?

また、挿入したコメントも全文が表示されないので、わざわざクリックして表示させる必要がでてきます。
そもそも、コメントがどこにあるのか探すのに手間がかかります。

このマクロでできること

マクロを実行すると、文字書式や段落書式を変更した部分はすべて「承諾」されて、変更が反映されます。

つまり、履歴として残りません。そのため、以下のように文字の削除や挿入箇所だけが表示されます。

「吹き出し」の数が減ったので表示スペースに余裕ができて、コメントが全文表示されています!

2015-11-21 23-32-32

マクロの説明

変更履歴の種類を、Typeプロパティで調べます。(10行目)

書式の変更履歴のTypeは、wdRevisionProperty ですので、この場合に変更履歴を承諾します。

承諾は、Accept メソッドで実行します。(11行目)

マクロ


Sub 書式の変更履歴を承諾する()

 Dim myRev As Revision

 '変更履歴の記録をオフにする
 ActiveDocument.TrackRevisions = False

 '書式変更の履歴を承諾する
 For Each myRev In ActiveDocument.Revisions
  If myRev.Type = wdRevisionProperty Then
   myRev.Accept
  End If
 Next

End Sub

関連記事

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

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

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

コメント

  1. 常谷 より:

    【コード】書式変更の変更履歴だけを承諾する
    と題する記事、大変ためになりました。
    ところで、左寄せなどの段落に関する設定や、表に関する設定、フッターヘッダーに関する設定は、「wdRevisionProperty」に含まれないようですね。
    段落設定と表に関する変更のtypeは、なんとか理解できましたが、フッターヘッダーの変更に関するtypeは、見つけられませんでした。
    上記記事をアップデートする機会がありましたら、よろしくお願いいたします。

    • 新田順也 より:

      常谷さん、記事をご覧いただきありがとうございます。
      調べてみたら、「wdRevisionProperty」は文字書式のことのようです。段落書式は「wdRevisionParagraphProperty」になっていました。

      (参考)
      WdRevisionType 列挙 (Word)
      https://docs.microsoft.com/ja-jp/office/vba/api/word.wdrevisiontype

      私がここに掲載しているマクロは、本文中のMainTextストーリーを対象にしています。ヘッダーやフッター、あとテキストボックスなどは含まれていません。

      (参考)
      ストーリー種別とは?
      https://www.wordvbalab.com/word/5760/

      厳密にマクロを作成する場合には、すべてのストーリーを対象にして変更箇所を探す必要があります。

      今回の「ActiveDocument.Revisions」とは、実は以下のように書けます。
      ActiveDocument.StoryRanges(wdMainTextStory).Revisions

      このStoryRangesプロパティを変更するとヘッダーやフッターも対象になります。

      (参考)
      StoryRanges プロパティ (Word)
      https://docs.microsoft.com/ja-jp/office/vba/api/word.document.storyranges

トップへ戻る