【VBA】ワードファイルを比較する

エクセルVBAで使うコードの備忘録。VBAでワードファイルを操作して、指定した二つの文書を比較するコード。

スポンサーリンク

事前準備

VBAでワードファイルを操作するには、参照設定が必要です。VBAのコードエディタから「ツール > 参照設定」と進み、「Microsoft Word XX.X Object Library」にチェックを入れておきます。

二つのドキュメントを比較する

二つのドキュメントを比較するには、Word.ApplicationオブジェクトのCompareDocumentsという関数を使用します。必須の引数は、変更前のオリジナルのドキュメントオブジェクトと変更後のオブジェクトです。その他の引数については、マイクロソフトの解説ページをご覧ください。

下記のサンプルコードでは、指定したパスの二つのワードドキュメントを比較して、比較後の文書を取得しています。比較後の文書を保存したい場合には、取得された比較後の文書に対してSaveをかけてやればOKです。

サンプルコード

Public Sub CompDocs()
    
    '--- Wordのアプリケーションオブジェクト ---'
    Dim objWord As Word.Application
    Set objWord = CreateObject("Word.Application")
    objWord.Visible = True
    
    '--- 比較対象のドキュメントオブジェクト1 ---'
    Dim objDoc_Org As Word.Document
    Set objDoc_Org = objWord.Documents.Open("[ワードファイルのパス1]")
    
    '--- 比較対象のドキュメントオブジェクト2 ---'
    Dim objDoc_Rev As Word.Document
    Set objDoc_Rev = objWord.Documents.Open("[ワードファイルのパス2]")
    
    '--- 文書を比較して比較結果のドキュメントオブジェクトを格納する ---'
    Dim objDoc_Cmp As Word.Document
    Set objDoc_Cmp = objWord.CompareDocuments(objDoc_Org, objDoc_Rev)
    
    Call objDoc_Org.Close(savechanges:=False)
    Call objDoc_Rev.Close(savechanges:=False)
    
    '--- ワードを閉じる ---'
    Call objWord.Quit
    
End Sub