Word で履歴を export するメモ


背景

  • Word で契約書の文章の差分管理をしなければならない(相手方法務が git など使えず, Word 履歴機能しか使えない)
  • 何回も変更された Word で, どこが変わったのか日付順でソートして確認したいが, Word の標準機能ではなぜか日付でソートというのができない

対処方法

Word マクロ(VBA)で履歴情報を csv にエクスポートして, csv で日付順にソートしてチェックする.

方法

https://stabucky.com/wp/archives/2339
https://docs.microsoft.com/en-us/office/vba/api/word.revision

VBA は初めてでしたが, VBA を 10 分くらい習って以下のようなものができました.
VBA で比較的簡単に履歴オブジェクトにアクセスできますね.

Sub rev()
'
' rev Macro
'
'

myFile = Options.DefaultFilePath(wdDocumentsPath) & "\revs.csv"

Open myFile For Output As #1

For Each myRev In ActiveDocument.Revisions
  Write #1, myRev.Date, myRev.Author, myRev.Type, myRev.Range.Start, myRev.Range.Text
Next myRev

Close #1

MsgBox "Wrote revisons to " & myFile

End Sub

Revison.Range.Text に変更文章があります.

変更点があまり多くなければ, とりあえずあとは目視作業で Word 中の文章とマッチングできるでしょうか.

TODO

  • Revison.Range.Start がどのページ(+行)に対応するかを計算する
  • 変更履歴の Start(Range)と, 文章のマッチングを求める

さらなる高みへ

docx 自体が xml なので, docx にして xml を直接パースするほうがはやいかも

Word docxファイルの中身を探検する - Office Open XML ざっくり入門
https://qiita.com/sky_y/items/2ab80adfb7a998e47239