【エクセルVBA】2つのテキストファイルが一致しているか確認する方法!

このページでは、フルパスで指定した2つのテキストファイルの中身が一致しているか確認するVBAコードをご紹介していきます。

ただ単に一致を確認するだけではなく、不一致の場合はどこが不一致なのかも教えてくれるようになっています。

 

あなたが指定するのは2つのテキストファイルのフルパスだけでOKです。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

使用するテキストファイルの紹介

今回は以下の以下のようなテキストファイルを使用していきます。

内容を比較するサンプルテキストファイル

今回は4行しかありませんが、基本的には何行あっても対応可能です。

 

このファイルを2つ用意し、完全一致している場合、1つだけ一部が変更されている場合の2パターンで動作を確認していきます。

 

スポンサーリンク

2つのテキストファイルが一致しているか確認するサンプルコード

それでは本題である2つのテキストファイルが一致しているか確認する方法をご紹介していきます。

 

以下がそのサンプルコードです。

※9,10行目にあなたが比較したい2つのファイルのフルパスを指定して使用してください。

Sub diff_text()
    '変数の型を宣言
    Dim filename1 As String, filename2 As String
    Dim read_data1 As String, read_data2 As String
    Dim i As Integer, counter As Integer
    'テキストファイルのフルパスを指定
    read_data1 = "C:\Users\Desktop\test\folder1\sample1.txt"
    read_data2 = "C:\Users\Desktop\test\folder2\sample2.txt"
    '2つのテキストファイルを開く
    Workbooks.OpenText Filename:=read_data1 _
    , Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False
    filename1 = ActiveWorkbook.Name
    Workbooks.OpenText Filename:=read_data2 _
    , Origin:=932, startrow:=1, DataType:=xlDelimited, textQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=False
    filename2 = ActiveWorkbook.Name
    '2つのテキストファイルを比較していく
    counter = 0
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If Workbooks(filename1).Sheets(1).Cells(i, 1) <> Workbooks(filename2).Sheets(1).Cells(i, 1) Then
            MsgBox i & "行目が違います" & vbCrLf & _
            "file1=" & Workbooks(filename1).Sheets(1).Cells(i, 1) & vbCrLf & _
            "file2=" & Workbooks(filename2).Sheets(1).Cells(i, 1)
            counter = counter + 1
        End If
    Next
    If counter = 0 Then
        MsgBox "2つのファイルは一致しています"
    End If
    '2つのテキストファイルを閉じる
    Workbooks(filename1).Close SaveChanges:=False
    Workbooks(filename2).Close SaveChanges:=False
End Sub

 

スポンサーリンク

サンプルコードの実行結果

それでは先ほどのサンプルコードが正しく動くのか確認してみましょう。

 

まずは以下の2つのファイルで実行してみます。

(2つが完全一致しているパターンです。)

内容を比較するサンプルテキストファイル(完全一致)

 

実行結果です。

サンプルコードを実行した結果(完全一致)

問題なく動作していますね。

 

次は以下の2つで実行してみます。

(3行目が異なっていますね。)

内容を比較するサンプルテキストファイル(部分不一致)

 

実行結果です。

サンプルコードを実行した結果(部分不一致)

こちらも問題なく動作していますね。

 

違い箇所が複数あっても動作するはずですのでご確認ください。

 

というわけで問題なく実行できましたね。

 

スポンサーリンク

おわりに

というわけで今回は、エクセルVBAをつかって2つのテキストファイルが一致しているか確認する方法をご紹介しました。

データ分析の際などにぜひご活用ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

  1. 和田吾郎 より:

    sub open_text()で
    base_file
    を宣言していますが使っていませんね。

タイトルとURLをコピーしました