Wordのマクロで変更履歴を表に書き出す

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

変更履歴コード変換

変更履歴のタイプは数値で得られるのでこれを日本語に変換します。

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

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報