背景
- 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