次の方法で共有

Wordの変更履歴箇所を、ExcelあるいはAccessで管理する方法

Anonymous
2011-01-17T13:24:40+00:00

Office2003Professionalを使っているので、Wordの変更履歴箇所、

具体的には追加、削除、書式変更箇所をそれぞれテーブル管理したいと思っています。

WordとExcelあるいはAccessの連携で、Wordの変更履歴箇所のみを

次のテーブルのように出力できないでしょうか?

具体的にしたいことは次です。

Word 1.doc  1つ目の文章:今日は、晴れていました。

Word2.doc    2つ目の文章:明日は、晴れているでしょう。

次が変更履歴で表示される個所を、Tableで管理するイメージです。

+------------+------------+-------------+-------------+

|  ページ      |該当行       |追加           |  削除         |

|-------------|-------------|--------------|-------------|

|  1             |1行           | 明             | 今            |

|-------------|-------------|--------------|-------------|

|  1             |1行           | ました          | でしょう   |

|-------------|-------------|--------------|-------------|

Microsoft 365 と Office | Word | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-01-24T01:21:27+00:00

こんにちは。

例えば下記のようなコードでExcelに出力することができます。

Public Sub Sample()

'ActiveDocumentの変更履歴をExcelに出力

  Dim rv As Word.Revision

  Dim i As Long

  i = 2

  With CreateObject("Excel.Application")

    .Visible = True

    With .Workbooks.Add

      '見出し

      .Worksheets(1).Cells(1, 1).Value = "ページ"

      .Worksheets(1).Cells(1, 2).Value = "行"

      .Worksheets(1).Cells(1, 3).Value = "タイプ"

      .Worksheets(1).Cells(1, 4).Value = "テキスト"

      For Each rv In ActiveDocument.Revisions

        .Worksheets(1).Cells(i, 1).Value = rv.Range.Information(wdActiveEndPageNumber)

        .Worksheets(1).Cells(i, 2).Value = rv.Range.Information(wdFirstCharacterLineNumber)

        .Worksheets(1).Cells(i, 3).Value = GetRVTypeInfo(rv.Type)

        .Worksheets(1).Cells(i, 4).Value = rv.Range.Text

        i = i + 1

      Next

    End With

  End With

End Sub

Private Function GetRVTypeInfo(ByVal rt As Word.WdRevisionType) As String

'変更履歴の種類を取得

  Dim ret As String

  Select Case rt

    Case wdNoRevision: ret = "変更されていない箇所"

    Case wdRevisionConflict: ret = "矛盾する変更"

    Case wdRevisionDelete: ret = "削除"

    Case wdRevisionDisplayField: ret = "フィールドの表示方法の変更"

    Case wdRevisionInsert: ret = "挿入"

    Case wdRevisionParagraphNumber: ret = "段落番号の変更"

    Case wdRevisionParagraphProperty: ret = "段落のプロパティの変更"

    Case wdRevisionProperty: ret = "プロパティの変更"

    Case wdRevisionReconcile: ret = "矛盾が解決された変更"

    Case wdRevisionReplace: ret = "置換"

    Case wdRevisionSectionProperty: ret = "セクションのプロパティの変更"

    Case wdRevisionStyle: ret = "スタイルの変更"

    Case wdRevisionStyleDefinition: ret = "スタイルの定義の変更"

    Case wdRevisionTableProperty: ret = "表のプロパティの変更"

    Case Else: ret = "不明"

  End Select

  GetRVTypeInfo = ret

End Function

Excelの制御方法については「Excel オートメーション」や「CreateObject("Excel.Application")」

といったキーワードで検索すれば、参考になるWebページがヒットするかと思います。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-01-25T12:38:44+00:00

    きぬあさ様

     お忙しい中、ご回答ありがとうございます。回答としてマークさせていていただきます。

     ご提供いただいたVBAのソースで、動作確認を行いました。質問を解決する内容と一致しています。

     具体的な実現方法をずっと自力で模索していたのですが、回答を頂けたことに感謝しております。

     (i=2も、よくよくソースを追うと納得できました。)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-01-23T12:26:15+00:00

    きぬあさ様

     ご回答ありがとうございます。連絡が遅くなり申し訳ございません。

     VBAにて、上記アドバイスを確認しました。初めてRevisionインタフェースと必要情報を格納している

     メンバ名を知ることができました。とても感動しています。

     私は Wordは使い慣れているのですが、VBAは初心者程度です。

     上記情報を、例えばWord側から、Excelのセルに値を渡す実現方法をご存知であれば、教えていただけないでしょうか?

     無理であれば、参考図書あるいは、参考URLをご教授いただけると、とても助かります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2011-01-18T01:40:48+00:00

    こんにちは。

    一般機能で可能かどうかは分かりませんが、少なくともマクロであればある程度の情報は

    取得できますので、ExcelでもAccessでも変更履歴の情報を出力することは可能だと思います。

    Public Sub Sample()

      Dim rv As Word.Revision

      For Each rv In ActiveDocument.Revisions

        Debug.Print "ページ:" & rv.Range.Information(wdActiveEndAdjustedPageNumber), _

                    "行:" & rv.Range.Information(wdFirstCharacterLineNumber), _

                    "タイプ(追加や削除等):" & rv.Type, _

                    "テキスト:" & rv.Range.Text

      Next

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません