'テキストファイルの比較
'同じならTrue / 違うなら False
Function DiffTxtFile(aFilepath1 As String, aFilepath2 As String) As Boolean
DiffTxtFile = True
' 機能:2つのテキストファイルを比較する
' 【変数定義】
Dim file1(1) As String ' ファイル名(フルパス)
Dim file2(1) As String ' ファイル名
Dim nFNO(1) As Integer 'ファイル番号
Dim buf(1) As String ' テキスト読み出し用バッファ
Dim line_no(1) As Integer ' 行数
Dim str1 As String ' 文字列
Dim i As Integer ' 整数
' ファイル名
file1(0) = aFilepath1 ' テキストファイル1のファイル名(フルパス)
file1(1) = aFilepath2 ' テキストファイル2のファイル名(フルパス)
' ファイルが存在するか確認
For i = 0 To 1
If Dir(file1(i)) = "" Then
MsgBox i & ": " & file1(i) & "が存在しません。"
Exit Function
End If
Next
For i = 0 To 1
' 使用可能なファイル番号を調べる
nFNO(i) = FreeFile()
' ファイルを開く
Open file1(i) For Input As #nFNO(i)
' 行数を初期化
line_no(i) = 0
' ファイル名から、パスを除く
file2(i) = Dir(file1(i))
Next
' どちらかのファイルがEOFになるまで繰り返す
Do Until EOF(nFNO(0)) Or EOF(nFNO(1))
For i = 0 To 1
Line Input #nFNO(i), buf(i) ' 1行ずつ読み出す
line_no(i) = line_no(i) + 1 ' 行番号を1増やす
' 1行ずつ比較
If i = 1 And StrComp(buf(0), buf(1), vbTextCompare) <> 0 Then
DiffTxtFile = False
MsgBox line_no(0) & "行目が異なります。" & vbCrLf _
& file2(0) & "=" & buf(0) & vbCrLf _
& file2(1) & "=" & buf(1)
GoTo label_escape
End If
Next
Loop
' 行数が異なるか?
If EOF(nFNO(0)) <> EOF(nFNO(1)) Then
For i = 0 To 1
If EOF(nFNO(i)) = False Then
Do Until EOF(nFNO(i))
Line Input #nFNO(i), buf(i) ' 1行ずつ読み出す
line_no(i) = line_no(i) + 1 ' 行番号を1増やす
Loop
End If
Next
DiffTxtFile = False
MsgBox "行数が異なります。" & vbCrLf _
& file2(0) & "=" & line_no(0) & vbCrLf _
& file2(1) & "=" & line_no(1)
GoTo label_escape
End If
label_escape:
' ファイルを閉じる
For i = 0 To 1
Close #nFNO(i)
Next
End Function