【Word VBA】新しいウィンドウで変更履歴を並べて比較するWordマクロ

2014年10月17日

先日のサン・フレア アカデミーさんのセミナー の受講生の方からの要望をもとに作りました。

変更履歴のあるファイルを用意します。

このファイルを、片方のウィンドウはこのファイルの最終版を表示し、片方は同じファイルで追記・削除箇所を表示して、左右で比較するようにしたら仕事がやりやすくなるかも、という提案です。

では、マクロの紹介の前にWordの機能を紹介します。

新しいウィンドウを開く

Wordの「新しいウィンドウを開く」という機能は、翻訳に限らず文章作成者にとって非常に便利な機能だと思います。

新しいウィンドウを開く  (外部リンク)

同じファイルが別のウィンドウで開くのです。

どちらのウィンドウで編集しても編集内容が反映されます。

ワイド画面が主流になっている現在、同じファイルを左右に並べて内容を比較できるのがいいですね。

実際にうれしさを体験するために表示してみてください。

並べて比較

さらに、「並べて比較」という機能もあります。

これは、ウィンドウを左右に並べて比較するものなのですが、修正前と修正後のファイルを開いて比較したりできると思います。

複数の文書を並べて比較するには  (外部リンク)

片方のファイルをスクロールすると、対比する対象のファイルも同時にスクロールします。

こちらも、うれしさを体験してみてください。

変更履歴

あと、変更履歴機能もありますね。これは、修正箇所がどこにあり、何をどのように修正したのかを示すための機能です。

Wordはなぜ思い通りにならないのか? 33 変更履歴の活用  (外部リンク)

表示内容を変更すれば、最終的な表示内容も確認できます。

修正履歴が残っていると、最終文書がどのように見えるのかイメージがつきにくいのでこちらも便利な機能です。
Wordってすごい機能がたくさんあります。
ようやくマクロの登場です。この上記3つの機能を組み合わせました。

このマクロでできること

冒頭で述べたとおり、修正履歴のあるファイルを、左側のウィンドウに最終版を表示し、右側のウィンドウに変更箇所とコメントを表示して、左右で比較します。

変更履歴を入れたファイルの内容の最終確認ができます。

変更履歴の記録をオンにした状態で左側のウィンドウで最終版の表示で文字入力をすると、右側のウィンドウに変更履歴がリアルタイムで書き出されますので、そういう使い方もあるかも。

マクロの解説

Windowオブジェクトを使って操作しています。

Windowの位置を左右に並べるために Windows.ResetPositionsSideBySide を使います。

マクロ


Sub 並べて比較_変更履歴()

 Dim myWindow(2) As Window
 
 'カーソルを先頭へ移動
 ActiveDocument.Range(0, 0).Select
 
 'myWindow(1) 現在開いている文書のウィンドウ
 Set myWindow(1) = ActiveWindow
 
 'myWindow(2) [新しいウィンドウを開く]で開いたウィンドウ
 Set myWindow(2) = NewWindow

 '並べて比較で左右に並べる
 '→[同時にスクロール]機能オン
 myWindow(1).Activate
 Windows.CompareSideBySideWith myWindow(2)
 
 'ウィンドウの位置を元に戻す
 '→左右にきれいに整列されます
 Windows.ResetPositionsSideBySide
 
 '変更履歴の表示
 'myWindow(1)は最終版
 With myWindow(1).View
  .ShowRevisionsAndComments = False
  .RevisionsView = wdRevisionsViewFinal
 End With

 '変更履歴の表示
 'myWindow(2)は最終版:変更箇所/コメントの表示
 With myWindow(2).View
  .ShowRevisionsAndComments = True
  .RevisionsView = wdRevisionsViewFinal
 End With

End Sub

関連記事

サン・フレア アカデミーさんのWordマクロセミナー

-コード
-,