Wordで変更履歴を記録しているときに、その変更履歴を一覧表の形に書き出すマクロです。
変更履歴を取得して、新規文書を開き、出力します。Word2007で確認しました。
コードを3個使います。
- 「変更履歴を表に書き出す」
これがメインです。 - 「変更履歴コード変換」
変更には「削除」や「挿入」などのタイプがありますが、マクロでは数値で取得されるため、これを日本語に変換します。 - 「二次元配列から表作成」
Word文書に表を挿入するためのマクロは「Wordのマクロで表を作成する」に書かれていますので、これを使います。
変更履歴を表に書き出す
Sub 変更履歴を表に書き出す()
Dim his(1000, 10)
kazu = ActiveDocument.Revisions.Count
his(1, 1) = "インデックス"
his(1, 2) = "開始位置"
his(1, 3) = "タイプ"
his(1, 4) = "テキスト"
For i = 1 To kazu
his(i + 1, 1) = ActiveDocument.Revisions(i).Index
his(i + 1, 2) = ActiveDocument.Revisions(i).Range.Start
his(i + 1, 3) = 変更履歴コード変換(ActiveDocument.Revisions(i).Type)
his(i + 1, 4) = ActiveDocument.Revisions(i).Range.Text
Next i
Documents.Add DocumentType:=wdNewBlankDocument
Call 二次元配列から表作成(his)
End Sub
Dim his(1000, 10)
kazu = ActiveDocument.Revisions.Count
his(1, 1) = "インデックス"
his(1, 2) = "開始位置"
his(1, 3) = "タイプ"
his(1, 4) = "テキスト"
For i = 1 To kazu
his(i + 1, 1) = ActiveDocument.Revisions(i).Index
his(i + 1, 2) = ActiveDocument.Revisions(i).Range.Start
his(i + 1, 3) = 変更履歴コード変換(ActiveDocument.Revisions(i).Type)
his(i + 1, 4) = ActiveDocument.Revisions(i).Range.Text
Next i
Documents.Add DocumentType:=wdNewBlankDocument
Call 二次元配列から表作成(his)
End Sub
変更履歴コード変換
変更履歴のタイプは数値で得られるのでこれを日本語に変換します。
Function 変更履歴コード変換(num)
Dim rireki As String
Select Case num
Case 0: rireki = "変更なし"
Case 1: rireki = "挿入"
Case 2: rireki = "削除"
Case 3: rireki = "プロパティの変更"
Case 4: rireki = "段落番号の変更"
Case 5: rireki = "フィールド表示の変更"
Case 6: rireki = "解決された競合"
Case 7: rireki = "競合"
Case 8: rireki = "スタイルの変更"
Case 9: rireki = "置換"
Case 10: rireki = "段落のプロパティの変更"
Case 11: rireki = "表のプロパティの変更"
Case 12: rireki = "セクションのプロパティの変更"
Case 13: rireki = "スタイル定義の変更"
Case 14: rireki = "内容の移動元"
Case 15: rireki = "内容の移動先"
Case 16: rireki = "表のセルの挿入"
Case 17: rireki = "表のセルの削除"
Case 18: rireki = "表のセルの結合"
End Select
変更履歴コード変換 = rireki
End Function
Dim rireki As String
Select Case num
Case 0: rireki = "変更なし"
Case 1: rireki = "挿入"
Case 2: rireki = "削除"
Case 3: rireki = "プロパティの変更"
Case 4: rireki = "段落番号の変更"
Case 5: rireki = "フィールド表示の変更"
Case 6: rireki = "解決された競合"
Case 7: rireki = "競合"
Case 8: rireki = "スタイルの変更"
Case 9: rireki = "置換"
Case 10: rireki = "段落のプロパティの変更"
Case 11: rireki = "表のプロパティの変更"
Case 12: rireki = "セクションのプロパティの変更"
Case 13: rireki = "スタイル定義の変更"
Case 14: rireki = "内容の移動元"
Case 15: rireki = "内容の移動先"
Case 16: rireki = "表のセルの挿入"
Case 17: rireki = "表のセルの削除"
Case 18: rireki = "表のセルの結合"
End Select
変更履歴コード変換 = rireki
End Function
コメント